![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 17:15 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【急】【在线】批量把多个html及其关联的files都改名的 |
| 可打印版本 945 / 14 |
| 第1楼 yc1998 | 发表于 2008-03-09 13:07 |
| 初级用户 发帖 11 积分 28 | |
|
【急】【在线】批量把多个html及其关联的files都改名的 我要批量把html和关联的files都改名,但是html和files关联着,所以html里面的连接路径都必须修改 。
背景描述: D:\abc文件夹下有多个文件夹,而且每个文件夹里面有多个html以及和他关联的files文件, html名字如: 第一章 第一节 概述.html files名字如:第一章 第一节 概述.files html里面的链接名字如:<img src="第一章%20第一节%20概述.files/001.gif"> (注:%20是因为文件名有空格子,所以html会用%20代替) 修改后如: html名字如: 123.html (不重复的随机名,非中文) files名字如:123.files html里面的链接名字如:<img src="123/001.gif"> 找到了以下代码,用cmd /v:on /c replace.bat执行,可以替换文件夹下所有文件的指定字符,这里是指定字符,而我必须find的是 <img src=‘abc/1.gif'>里面路径的这个动态abc,替换为上面随机产生的文件名“123” @echo off setlocal set DPATH=D:\testDat\a set FILETYPE=*.txt set SCONTENT=被替代 set DCONTENT=新字符串 set TMPFILE=%random%.tmp for /r %DPATH% %%i in (%FILETYPE%) do ( if exist %TMPFILE% (del /f/q %TMPFILE%) for /f "usebackq tokens=*" %%j in ("%%i") do ( set TMP=%%j echo !TMP:%SCONTENT%=%DCONTENT%!>>%TMPFILE% ) move /y %TMPFILE% "%%i" ) endlocal 现在要解决的是:如何替代文件名,而且防止重命名(可以随机数字) 请帮忙写个,或者修改以上代码,谢谢 [ Last edited by yc1998 on 2008-3-9 at 07:21 PM ] |
|
| 第2楼 suntb | 发表于 2008-03-09 13:55 |
| 高级用户 发帖 277 积分 581 | |
|
汗一下 按我的理解
这是.files该是文件夹而不是文件吧? 而且楼主的要求也没写清楚 要改成什么样的? |
|
| 第3楼 suntb | 发表于 2008-03-09 14:04 |
| 高级用户 发帖 277 积分 581 | |
|
要将每个html和文件夹都改成什么样?楼主都没说下
|
|
| 第4楼 yc1998 | 发表于 2008-03-09 16:49 |
| 初级用户 发帖 11 积分 28 | |
|
不好意思啊,补充一下:
我只是需要可以实现批量改名,我把所有的中文标题改为字母的。 修改后如: html名字如: c1_s1_gs.html files名字如:c1_s1_gs.files html里面的链接名字如:<img src="c1_s1_gs/001.gif"> 如果比较困难,修改为数字标题也可以,但是是批量,所以要防止重命名 [ Last edited by yc1998 on 2008-3-9 at 04:59 PM ] |
|
| 第5楼 fastslz | 发表于 2008-03-09 16:54 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
CMD环境很难处理html,怕字符<>
|
|
| 第6楼 yc1998 | 发表于 2008-03-09 16:56 |
| 初级用户 发帖 11 积分 28 | |
|
^<表示<
我搜索到这个东西,这样证明批处理可以做到啊 |
|
| 第7楼 yc1998 | 发表于 2008-03-09 17:02 |
| 初级用户 发帖 11 积分 28 | |
|
.files是网页资源文件夹。保存图片什么的,是文件夹啊
我们打开网页,另存为的时候会生成的那个文件夹。 |
|
| 第8楼 vkill | 发表于 2008-03-09 17:16 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
sed & awk
|
|
| 第9楼 fastslz | 发表于 2008-03-09 18:14 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
实在是精细活啊?用VBS解决部分字符问题,下面重命名难倒我了,怎样规律批量重命名规则?
第一章 第一节 概述.html 命名成 c1_s1_gs.html 不难 第一百三十章 第一百三十节 概述.html 命名成 c130_s130_gs.html 难 我怕数字计算请别人帮忙吧 |
|
| 第10楼 yc1998 | 发表于 2008-03-09 19:11 |
| 初级用户 发帖 11 积分 28 | |
|
@echo off
setlocal set DPATH=D:\testDat\a set FILETYPE=*.txt set SCONTENT=被替代 set DCONTENT=新字符串 set TMPFILE=%random%.tmp for /r %DPATH% %%i in (%FILETYPE%) do ( if exist %TMPFILE% (del /f/q %TMPFILE%) for /f "usebackq tokens=*" %%j in ("%%i") do ( set TMP=%%j echo !TMP:%SCONTENT%=%DCONTENT%!>>%TMPFILE% ) move /y %TMPFILE% "%%i" ) endlocal 找到了这个。用cmd /v:on /c replace.bat执行,可以替换文件夹下所有文件的指定字符,这里是指定字符,而我必须搜索的是 <img src=‘abc/1.gif'>里面路径的这个动态abc,其实就是对应html的文件名 但是现在的问题是如何替代文件名,而且防止重命名(可以随机数字) |
|
| 第11楼 yc1998 | 发表于 2008-03-09 19:14 |
| 初级用户 发帖 11 积分 28 | |
Originally posted by fastslz at 2008-3-9 06:14 PM: |
|
| 第12楼 yc1998 | 发表于 2008-03-10 12:23 |
| 初级用户 发帖 11 积分 28 | |
|
up
|
|
| 第13楼 terse | 发表于 2008-03-10 13:32 |
| 银牌会员 发帖 946 积分 2,404 | |
|
你一楼所说的:
修改后如: html名字如: 123.html (不重复的随机名,非中文) files名字如:123.files html里面的链接名字如:<img src="123/001.gif"> 我想知道123.files如是文件夹的话 那为什么这里<img src="123/001.gif">怎么不是<img src="123.files/001.gif"> |
|
| 第14楼 fastslz | 发表于 2008-03-10 14:23 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
实际测试将下面代码另存为bat, 运行生成测试文件 [ Last edited by fastslz on 2008-3-10 at 03:14 PM ] |
|
| 第15楼 terse | 发表于 2008-03-10 15:02 |
| 银牌会员 发帖 946 积分 2,404 | |
|
把本网页另存后 得到 xxx.html文件和xxx.files文件夹
测试把xxx.html里的xxx.files连接替换为c_g_gs%n% 同时把xxx.files文件夹改名c_g_gs%n% @echo off for /f "delims=" %%i in ('dir /b /ad') do ( set/a n+=1 set "var=%%i" setlocal enabledelayedexpansion for /f "tokens=1* delims=:" %%a in ('findstr /n . "!var:~0,-6!.html"') do ( set "src=%%b" call :up ) move "!var!" "c_g_gs!n!" move "c_g_gs!n!.tmp" "c_g_gs!n!.html" ) pause goto :eof :up set "src1=!src:%%20= !" set "src=!src1:%var%=c_g_gs%n%!" >>c_g_gs%n%.tmp echo !src! [ Last edited by terse on 2008-3-10 at 03:03 PM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |