首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Forfiles命令在For循环中

Forfiles命令在For循环中
EN

Stack Overflow用户
提问于 2022-01-05 17:16:36
回答 2查看 421关注 0票数 0

从批处理文件中简化工作脚本部件

代码语言:javascript
复制
for %%F in 
(
C:\A\*.TXT
) do (
echo %%F
)

这将打印出文件夹A中的所有.TXT文件。

我想添加一个forfile扩展名,以便只获得.TXT文件/D -2。

代码语言:javascript
复制
for %%F in ('
forfiles /P "C:\A\" /M *.TXT /D -2 /C "cmd /c echo @PATH"
') do 
(
echo %%F
)

但这只会将forfiles命令打印为string:

代码语言:javascript
复制
'forfiles
/P
"C:\A\"
/M
/D
-2
/C
"cmd /c echo @PATH"'

如果可能的话,我必须如何交出forfiles命令才能使它工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-05 17:31:38

我刚试了一下,效果很好:

代码语言:javascript
复制
forfiles /M *.TXT /D -2 /C "cmd /c echo @file"

正如您所看到的,您不需要将forfiles添加到for-循环,因为它取代了for-循环。

如果您希望对子目录中的所有文件都这样做,可以添加/S开关:

代码语言:javascript
复制
forfiles /S /M *.TXT /D -2 /C "cmd /c echo @path"

..。如果您想指定一个目录,您可以这样做:

代码语言:javascript
复制
forfiles /P C:\ /S /M *.TXT /D -2 /C "cmd /c echo @path"
票数 1
EN

Stack Overflow用户

发布于 2022-01-05 19:03:33

正如已经回答的那样,要获得输出,只包含每个双引号的路径,您不需要一个for循环。

代码语言:javascript
复制
%SystemRoot%\System32\forfiles.exe /P "C:\A" /M "*.txt" /D -2 /C "%SystemRoot%\System32\cmd.exe /D /C \"If @IsDir == FALSE Echo @Path\""

但是,从技术上讲,要获得与您从以下位置获得的输出相同的结果:

代码语言:javascript
复制
for %%F in 
(
C:\A\*.TXT
) do (
echo %%F
)

也就是说,不需要双引号,您仍然需要一个for循环:

代码语言:javascript
复制
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

代码语言:javascript
复制
%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

代码语言:javascript
复制
%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\""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70596945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档