如何使用for循环遍历目录中的每个文件?
我如何判断某个条目是一个目录还是一个文件?
如何使用for循环遍历目录中的每个文件?
我如何判断某个条目是一个目录还是一个文件?
当前回答
它也可以使用forfiles命令:
forfiles /s
还要检查它是否是一个目录
forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"
其他回答
它也可以使用forfiles命令:
forfiles /s
还要检查它是否是一个目录
forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"
在我的情况下,我必须删除临时文件夹下的所有文件和文件夹。这就是我最后做这件事的原因。我必须运行两个循环一个文件和一个文件夹。如果文件或文件夹名称中有空格,则必须使用" "
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"
)
要遍历每个文件,可以使用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将只获得文件的第一行。
这个for循环将列出目录中的所有文件。
pushd somedir
for /f "delims=" %%f in ('dir /b /a-d-h-s') do echo %%f
popd
"delims="用于显示包含空格的长文件名....
'/b"只显示名称,不显示大小日期等。
关于dir's /a参数需要了解的一些事情。
使用“/a”会列出所有内容,包括隐藏属性和系统属性。 “/ad”只显示子目录,包括隐藏目录和系统目录。 "/a-d"参数消除带有'D'irectory属性的内容。 "/a-d-h-s"将显示所有内容,但包含'D'irectory, 'H'idden 'S'ystem属性的条目除外。
如果在命令行上使用此命令,请删除“%”。
希望这能有所帮助。
下面的代码在当前目录中创建一个名为“AllFilesInCurrentDirectorylist.txt”的文件,其中包含当前目录中所有文件(仅为文件)的列表。看看吧
dir /b /a-d > AllFilesInCurrentDirectorylist.txt