从批处理文件中简化工作脚本部件
for %%F in
(
C:\A\*.TXT
) do (
echo %%F
)这将打印出文件夹A中的所有.TXT文件。
我想添加一个forfile扩展名,以便只获得.TXT文件/D -2。
for %%F in ('
forfiles /P "C:\A\" /M *.TXT /D -2 /C "cmd /c echo @PATH"
') do
(
echo %%F
)但这只会将forfiles命令打印为string:
'forfiles
/P
"C:\A\"
/M
/D
-2
/C
"cmd /c echo @PATH"'如果可能的话,我必须如何交出forfiles命令才能使它工作。
发布于 2022-01-05 17:31:38
我刚试了一下,效果很好:
forfiles /M *.TXT /D -2 /C "cmd /c echo @file"正如您所看到的,您不需要将forfiles添加到for-循环,因为它取代了for-循环。
如果您希望对子目录中的所有文件都这样做,可以添加/S开关:
forfiles /S /M *.TXT /D -2 /C "cmd /c echo @path"..。如果您想指定一个目录,您可以这样做:
forfiles /P C:\ /S /M *.TXT /D -2 /C "cmd /c echo @path"发布于 2022-01-05 19:03:33
正如已经回答的那样,要获得输出,只包含每个双引号的路径,您不需要一个for循环。
%SystemRoot%\System32\forfiles.exe /P "C:\A" /M "*.txt" /D -2 /C "%SystemRoot%\System32\cmd.exe /D /C \"If @IsDir == FALSE Echo @Path\""但是,从技术上讲,要获得与您从以下位置获得的输出相同的结果:
for %%F in
(
C:\A\*.TXT
) do (
echo %%F
)也就是说,不需要双引号,您仍然需要一个for循环:
For /F "Delims=" %%G In ('%SystemRoot%\System32\forfiles.exe /P "C:\A" /M "*.txt" /D -2 /C "%SystemRoot%\System32\cmd.exe /D /C \"If @IsDir == FALSE Echo @Path\""') Do Echo %%~G或…
用Echo Off
%SystemRoot%\System32\forfiles.exe /P "C:\A" /M "*.txt" /D -2 /C "%SystemRoot%\System32\cmd.exe /Q /D /C \"If @IsDir == FALSE For %%G In (@Path) Do Echo %%~G\"" & Echo(用Echo On
%SystemRoot%\System32\forfiles.exe /P "C:\A" /M "*.txt" /D -2 /C "%SystemRoot%\System32\cmd.exe /D /C \"@If @IsDir == FALSE For %%G In (@Path) Do Echo %%~G\""https://stackoverflow.com/questions/70596945
复制相似问题