中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 23:45
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 討論一個批處理改名的問題 查看 1,986 回复 3
楼 主 討論一個批處理改名的問題 发表于 2004-11-19 00:00 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
一文件夹中有这样一批文件:
names.doc和names_source.doc
现在要把后者改名为前者并覆盖之(如:a_source.doc改名为a.doc覆盖原来的a.doc
b_source.doc改名为b.doc覆盖原来的b.doc等等
)

2 发表于 2004-11-23 00:00 ·  美国
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
UID 9
状态 离线
del ?.docren *.doc ?.doc
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

3 发表于 2004-11-27 00:00 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
names不是祇有一個字母可以是wendos.doc wendos_source.docwu.doc wu_source.docwendos.mycool.net.doc wendos.mycool.net_source.doc……
4 发表于 2004-11-27 00:00 ·  中国 河北 保定 联通
初级用户
积分 165
发帖 28
注册 2004-08-09 00:00
UID 29892
性别 男
状态 离线
首先楼主应该限制一下这个改名操作所依赖的运行环境,例如是在纯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程序将是一个不错的选择。
论坛跳转: