如何使用for循环遍历目录中的每个文件?
我怎么知道某个条目是目录还是仅仅是文件?
#1楼
此for循环将列出目录中的所有文件。
pushd somedir
for /f "delims=" %%f in ('dir /b /a-d-h-s') do echo %%f
popd
“ delims =”可用于显示长文件名并带有空格。
'/ b“仅显示名称,不显示大小日期等。
关于dir的/ a参数要了解的一些事情。
任何使用“ / a”都会列出所有内容,包括隐藏属性和系统属性。
“ / ad”将仅显示子目录,包括隐藏目录和系统目录。
“ / ad”参数消除具有'D'irectory属性的内容。
“ / adhs”将显示所有内容,但条目带有'D'irectory,'H'idden'S'ystem属性。
如果在命令行上使用此命令,请删除“%”。
希望这可以帮助。
#2楼
for %1 in (*.*) do echo %1
尝试使用cmd中的“帮助”以获取完整指南
#3楼
%1引用传入的第一个参数,不能在迭代器中使用。
尝试这个:
@echo off
for %%i in (*.*) do echo %%i
#4楼
这将列出当前目录中的所有文件(并且仅列出文件):
for /r %i in (*) do echo %i
另外,如果您在批处理文件中运行该命令,则需要将%符号加倍。
for /r %%i in (*) do echo %%i
(感谢@agnul)
#5楼
我将使用vbscript(Windows脚本宿主),因为在批处理中,我确定您无法确定名称是文件还是目录。
在vbs中,可能是这样的:
Dim fileSystemObject
Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim mainFolder
Set mainFolder = fileSystemObject.GetFolder(myFolder)
Dim files
Set files = mainFolder.Files
For Each file in files
...
Next
Dim subFolders
Set subFolders = mainFolder.SubFolders
For Each folder in subFolders
...
Next