如何使用for循环遍历目录中的每个文件?

我如何判断某个条目是一个目录还是一个文件?


当前回答

遍历…

...当前目录下的文件:for %f in (.\*) do @echo %f ...subdirs in current dir: for /D %s in (.\*) do @echo %s .../R %f在(.\*)做@echo %f .../R /D %s in (.\*) do @echo %s

不幸的是,我没有找到同时遍历文件和子dirs的任何方法。

只需使用cygwin及其bash即可获得更多功能。

除此之外:你有没有注意到,MS Windows的内置帮助是描述cmd命令行的语法的一个很好的资源?

也可以在这里看看:http://technet.microsoft.com/en-us/library/bb490890.aspx

其他回答

遍历您可以使用的所有文件和文件夹

for /F "delims=" %%a in ('dir /b /s') do echo %%a

若要只遍历所有文件夹而不遍历文件,则可以使用

for /F "delims=" %%a in ('dir /a:d /b /s') do echo %%a

其中/s将以无限深度给出整个目录树的所有结果。如果您想遍历该文件夹的内容而不是其子文件夹的内容,则可以跳过/s

在迭代中实现搜索

要遍历特定的命名文件和文件夹,您可以搜索名称并使用for循环进行迭代

for /F "delims=" %%a in ('dir "file or folder name" /b /s') do echo %%a

要遍历特定的命名文件夹/目录而不是文件,请在同一命令中使用/AD

for /F "delims=" %%a in ('dir "folder name" /b /AD /s') do echo %%a

我使用xcopy命令和/L选项来获取文件名。所以如果你想获取一个目录或子目录下的所有文件,你可以这样做:

for /f "delims=" %%a IN ('xcopy "D:\*.pdf" c:\ /l') do echo %%a

我只是使用c:\作为目标,因为它一直存在于windows系统中,而且它不会复制,所以没关系。如果你也想要子目录,只需在最后使用/s选项。如果出于其他原因需要xcopy的其他开关,也可以使用它们。

for %1 in (*.*) do echo %1

在cmd中尝试“HELP FOR”以获得完整的指南

这是XP命令的指南。http://www.ss64.com/nt/

从命令行运行FOR和从批处理文件运行FOR之间有细微的区别。在批处理文件中,您需要在每个变量引用前放置两个%字符。

从命令行:

FOR %i IN (*) DO ECHO %i

从批处理文件:

FOR %%i IN (*) DO ECHO %%i

%1是传入的第一个参数,不能在迭代器中使用。

试试这个:

@echo off
for %%i in (*.*) do echo %%i