返回列表 发帖

[文件操作] 批处理for /f与dir命令组合怎样列举出D盘所有目录下的txt文件?

问题
列举出D盘所有目录下的txt文件,包括隐藏文件夹内的TXT文件。。
请问这个命令该怎么写,我对FOR/F与DIR命令的组合非常不明白,所以请教知道的朋友。最好是可以详细的讲解下。。先谢谢大家为我解答。

for /f "delims=" %%a in ('dir /a-d /s /b d:\*.txt') do echo %%aCOPY
这其实是一种管道,它等于
dir /a-d /s /b d:\*.txt|for /f "delims=" %%a in ('more') do echo %%aCOPY

TOP

2# zm900612


for /f中的('set')会开启新的cmd.exe进程,而单纯的管道是不会的……

TOP

for /f 与 dir 的配合

问题
列举出D盘所有目录下的txt文件,包括隐藏文件夹内的TXT文件。。
请问这个命令该怎么写,我对FOR/F与DIR命令的组合非常不明白,所以请教知道的朋友。最好是可以详细的讲解下。。先谢谢大家为我解答。
1

评分人数

TOP

批处理中的写法
@Echo Off
For /f "tokens=*" %%a in ('Dir /a /b /s * d:') do Echo %%aCOPY
CMD窗口中的写法
For /f "tokens=*" %a in ('Dir /a /b /s * d:') do @Echo %aCOPY
其实只是要列出文件的话用这个就可以
Dir /a /b /s * d:COPY
配合For 语句的话就是在 in () 括号中的写法要注意点 我给你列出来
1for /f %%i in (文件名) do (……)
2for /f %%i in ('命令语句') do (……)
3for /f %%i in ("字符串") do (……)
4for /f "usebackq" %%i in ("文件名") do (……)
5for /f "usebackq" %%i in (`命令语句`) do (……)
6for /f "usebackq" %%i in ('字符串') do (……)COPY

TOP

本帖最后由 zm900612 于 2011-6-12 19:58 编辑
2# zm900612


for /f中的('set')会开启新的cmd.exe进程,而单纯的管道是不会的……
applba 发表于 2011-6-12 19:08


这倒是,笔误了,应该是等于:
(dir /a-d /s /b d:\*.txt)|for /f "delims=" %%a in ('more') do echo %%aCOPY

TOP

感谢大家的帮助。。。

TOP

6# zm900612


顺带请问下版主,for in(more) 这里的more做何解呢。。。
dir /a-d /s /b d:\*.txt|for /f "delims=" %%a in ('more') do echo %%a COPY
返回的值与
for /f "delims=" %%a in (dir /a-d /s /b d:\*.txt) do echo %%aCOPY
并不一样
第一段代码执行后,返回竟然是这样的格式
C:\Documents and Settings\Administrator\桌面>(echo d:\Backup\QQ\Dat\Phrase.txt
)  怀疑是命令行书写的问题,但是看来半天没看出来哪里出错了。。

第二段代码执行后就是直接显示D盘下所有的TXT文件。。。

不太明白,请您指导一下

TOP

返回列表