中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 23:49
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请各位大侠写个winxp下的批处理脚本
楼 主 请各位大侠写个winxp下的批处理脚本 发表于 2006-05-06 17:25 ·  中国 广西 桂林 电信
新手上路
积分 8
发帖 2
注册 2006-05-06 17:19
UID 55046
状态 离线
比如有这样一个目录
H:\
│ a.txt

├─a3
│ │ a3.txt
│ │
│ └─a3
│ │ a31.txt
│ │
│ └─a4
│ │ a6.txt
│ │
│ └─a5
│ a6.txt

└─a4
│ a1.txt

└─g
│ a1.txt

└─ar
│ a8.txt

└─f
│ a23.txt

└─afg
a8.txt

请问如何遍历所有目录,并对目录下的txt文件进行改名操作,改成bak!

我需要知道的是在不知道子目录名的情况下,如何进行目录遍历和操作。
2 发表于 2006-05-06 18:10 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
遍历目录可以用for命令的/r参数,你只需要知道顶层目录名就行了.

@echo off
pushd h:\
for /r . %%i in (*.txt) do @ren "%%i" "%%~ni.bak"
popd

当然,你也可以不用for来遍历,改用dir或者xcopy来打印查找的文件到一临时文件,然后根据文件内容进行操作,这种方法比较灵活,可以指定各种文件属性,不过缺点是会产生临时文件,如果不产生临时文件用for+dir或for+xcopy的话效率就不怎么样了。
dir:

pushd f:\
dir /s *.txt >tmp1.txt
popd

xcopy:

pushd h:\
xcopy /l /s /h /f *.txt %tmp%\ >tmp1.txt
popd

得到tmp1.txt后再用for根据tmp1中的文件列表进行操作。
3 发表于 2006-05-11 18:14 ·  中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
新手上路
积分 8
发帖 2
注册 2006-05-06 17:19
UID 55046
状态 离线
谢谢3742668!:)
对于 for参数,感觉好难弄明白,还有批处理脚本命令是如何对文本文件的内容进行读取操作.
有不有这方面的 具体例子,越多越详细的例子教程.
论坛跳转: