分类:
2009-11-10 13:06:50
来源地址: http://hi.bccn.net/space-21499-do-blog-id-13524.html
shell for 循环指令使用
2008-11-02 22:34
for可以使一些不支持通配符的命令对一系列文件进行操作。在WIN9X中,TYPE命令(显示文件内容)是不支持*.txt这种格式的(WIN2K开始TYPE已支持通配)。遇到类似情况就可以用FOR:
for %a in (*.txt) do type %a
现分别举例说明如下:
1. 用 /r 遍历目录树
当用 *.* 或 *.txt 等文件名通配符作为 for /r 的循环范围时,可以对当前目录下所有文件(包括子目录里面的文件)进行操作。举个例子,你想在当前目录的所有txt文件(包括子目录)内容中查找"bluebear"字样,但由于find本身不能遍历子目录,所以我们用for:
for /r . %a in (*.txt) do @find "bluebear" %a
for /r . %a in (.) do @if exist %aCVS rd /s /q %aCVS
for /r . %a in (.) do @if exist %aCVS @echo %aCVS
c: empa1.txt
c: empa2.txt
c: empsubdir3.txt
c: empsubdir4.txt
for /f %a in (todel.txt) do del %a
Volume in drive D is DATA
Volume Serial Number is C47C-9908
Directory of D: mp
09/26/2001 12:50 PM 18,426 alg0925.txt
12/02/2001 04:29 AM 795 bsample.txt
04/11/2002 04:18 AM 2,043 invitation.txt
4 File(s) 25,651 bytes
0 Dir(s) 4,060,700,672 bytes free
for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a DEL %a
for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a echo %a
alg0925.txt
bsample.txt
invitation.txt
FOR /F "delims==" %i IN ('set') DO @echo %i
ALLUSERSPROFILE
APPDATA
CLASSPATH
CommonProgramFiles
COMPUTERNAME
ComSpec
dircmd
HOMEDRIVE
......
FOR /F "delims== tokens=2" %i IN ('set') DO @echo %i
Sat 07/13/2002
for /f "tokens=3 delims=/ " %a in ('date /t') do @echo %a
for /f "tokens=2,3,4 delims=/ " %a in ('date /t') do @echo %c-%a-%b
g:mp3Archived-18-01-A游鸿明-下沙游鸿明-01 下沙.mp3
g:mp3Archived-18-01-A游鸿明-下沙游鸿明-02 21个人.mp3
......
g:mp3Archived-18-01-A王菲-寓言王菲-阿修罗.mp3
g:mp3Archived-18-01-A王菲-寓言王菲-彼岸花.mp3
g:mp3Archived-18-01-A王菲-寓言王菲-不爱我的我不爱.mp3
......
游鸿明-01 下沙
游鸿明-02 21个人
......
王菲-阿修罗
王菲-彼岸花
王菲-不爱我的我不爱
......
for /r g:mp3 %a in (*.mp3) do @echo %~na