如何使用for循环遍历目录中的每个文件?
我如何判断某个条目是一个目录还是一个文件?
如何使用for循环遍历目录中的每个文件?
我如何判断某个条目是一个目录还是一个文件?
当前回答
这将递归地列出当前目录及其子目录中的所有文件(仅是文件):
for /r %i in (*) do echo %i
此外,如果在批处理文件中运行该命令,则需要将%符号加倍。
for /r %%i in (*) do echo %%i
(感谢@agnul)
其他回答
for %1 in (*.*) do echo %1
在cmd中尝试“HELP FOR”以获得完整的指南
这是XP命令的指南。http://www.ss64.com/nt/
它也可以使用forfiles命令:
forfiles /s
还要检查它是否是一个目录
forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"
我很难让jop的答案与绝对路径一起工作,直到我发现这个参考:https://ss64.com/nt/for_r.html
下面的示例循环遍历一个由绝对路径给出的目录中的所有文件。
For /R C:\absoulte\path\ %%G IN (*.*) do (
Echo %%G
)
遍历您可以使用的所有文件和文件夹
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
在我的情况下,我必须删除临时文件夹下的所有文件和文件夹。这就是我最后做这件事的原因。我必须运行两个循环一个文件和一个文件夹。如果文件或文件夹名称中有空格,则必须使用" "
cd %USERPROFILE%\AppData\Local\Temp\
rem files only
for /r %%a in (*) do (
echo deleting file "%%a" ...
if exist "%%a" del /s /q "%%a"
)
rem folders only
for /D %%a in (*) do (
echo deleting folder "%%a" ...
if exist "%%a" rmdir /s /q "%%a"
)