标题: 討論一個批處理改名的問題
[打印本页]
作者: bush
时间: 2004-11-19 00:00
标题: 討論一個批處理改名的問題
一文件夹中有这样一批文件:
names.doc和names_source.doc
现在要把后者改名为前者并覆盖之(如:a_source.doc改名为a.doc覆盖原来的a.doc
b_source.doc改名为b.doc覆盖原来的b.doc等等
)
[此贴子已经被作者于2004-11-19 16:00:50编辑过]
作者: Wengier
时间: 2004-11-23 00:00
del ?.docren *.doc ?.doc
作者: bush
时间: 2004-11-27 00:00
names不是祇有一個字母可以是wendos.doc wendos_source.docwu.doc wu_source.docwendos.mycool.net.doc wendos.mycool.net_source.doc……
作者: 小石头
时间: 2004-11-27 00:00
首先楼主应该限制一下这个改名操作所依赖的运行环境,例如是在纯DOS下或者NT环境下。
我假设你在XP环境下使用批处理执行这个操作。下面我的批处理所要做的工作是对当前目录下所有以_source.doc结尾的文件(例如a_source.doc)进行这样的处理:如果存在对应的a.doc,那么删除a.doc,然后将它改名为a.doc。如果不存在对应的a.doc文件,那么不进行操作。第一个批处理doit.cmd(处理单个?_source.doc):
@echo off
if %1#==# goto _quit
echo %1 | find /i "_source.doc" > nul
if errorlevel 1 goto _quit
set oldname=%1
set newname=%oldname:~0,-11%.doc
if exist %newname% goto _ren
goto _quit
:_ren
del %newname%
ren %oldname% %newname%
if exist %newname% echo 成功将%oldname% 改名为 %newname%!
:_quit
set oldname=
set newname=
第二个批处理文件叫Go.cmd(它会调用第一个批处理文件):
@echo off
for /f %%i in ('dir /a-d /b *_source.doc') do @call doit.cmd %%i
如果要在纯DOS或者98的DOS窗口下执行这个操作,估计如果不用第三方工具那么将会很困难。如果可以使用第三方工具,那么strings程序将是一个不错的选择。