如何使用for循环遍历目录中的每个文件?
我如何判断某个条目是一个目录还是一个文件?
如何使用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 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 %1 in (*.*) do echo %1
在cmd中尝试“HELP FOR”以获得完整的指南
这是XP命令的指南。http://www.ss64.com/nt/
要遍历每个文件,可以使用for循环:
(目录\路径\*)do (something_here)
在我的例子中,我还需要文件内容、名称等。
这导致了一些问题,我认为我的用例可能会有所帮助。下面是一个循环,它从目录中的每个“。txt”文件中读取信息,并允许你对它做一些事情(例如setx)。
@ECHO OFF
setlocal enabledelayedexpansion
for %%f in (directory\path\*.txt) do (
set /p val=<%%f
echo "fullname: %%f"
echo "name: %%~nf"
echo "contents: !val!"
)
*限制:val<=%%f将只获得文件的第一行。
我很难让jop的答案与绝对路径一起工作,直到我发现这个参考:https://ss64.com/nt/for_r.html
下面的示例循环遍历一个由绝对路径给出的目录中的所有文件。
For /R C:\absoulte\path\ %%G IN (*.*) do (
Echo %%G
)
试试这个:
::Example directory
set SetupDir=C:\Users
::Loop in the folder with "/r" to search in recursive folders, %%f being a loop ::variable
for /r "%SetupDir%" %%f in (*.msi *.exe) do set /a counter+=1
echo there are %counter% files in your folder
它会计算目录(以及子目录)中的。msi和。exe文件。因此,作为可执行文件的文件夹和文件之间也有区别。
如果需要过滤循环中的其他文件,只需添加一个扩展名(.pptx .docx ..)