中国DOS联盟论坛

中国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:
实在是精细活啊?用VBS解决部分字符问题,下面重命名难倒我了,怎样规律批量重命名规则?
第一章 第一节 概述.html 命名成


对不起,其实文件名可以随机的,可以是随机数字,但是必须里面的替换文件名必须就是这个随即数文件名一样
第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