[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

TOP

2# zm900612


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

TOP

for /f 与 dir 的配合

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

评分人数

TOP

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

TOP

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


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


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

TOP

感谢大家的帮助。。。

TOP

6# zm900612


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

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

不太明白,请您指导一下

TOP

返回列表