Mar*_*aio 116 windows cmd batch-file
在Windows批处理文件中是否可以在单个 FOR循环中调用多个命令?比方说,我想打印文件名,删除后:
@ECHO OFF
FOR /r %%X IN (*.txt) DO (ECHO %%X DEL %%X)
REM the line above is invalid syntax.
Run Code Online (Sandbox Code Playgroud)
我知道在这种情况下我可以通过执行两个不同的FOR循环来解决它:一个用于显示名称,一个用于删除文件,但是是否可以仅在一个循环中执行此操作?
And*_*ers 190
使用&对于短命令来说很好,但是这一行可以非常快地完成.发生这种情况时,请切换到多行语法.
FOR /r %%X IN (*.txt) DO (
ECHO %%X
DEL %%X
)
Run Code Online (Sandbox Code Playgroud)
安置(和)事宜.后面的圆括号DO必须放在同一行,否则批处理文件将不正确.
详情if /?|find /V ""请见.
Sil*_*kin 109
FOR /r %%X IN (*) DO (ECHO %%X & DEL %%X)
Run Code Online (Sandbox Code Playgroud)
bk1*_*k1e 30
SilverSkin和Anders都是正确的.您可以使用括号执行多个命令.但是,您必须确保命令本身(及其参数)不包含括号.cmd贪婪地搜索第一个右括号,而不是优雅地处理嵌套的括号.这可能导致命令行的其余部分无法解析,或者可能导致某些括号被传递给命令(例如DEL myfile.txt)).
解决方法是将循环体拆分为单独的函数.请注意,您可能需要跳转功能体以避免"掉入"它.
FOR /r %%X IN (*.txt) DO CALL :loopbody %%X
REM Don't "fall through" to :loopbody.
GOTO :EOF
:loopbody
ECHO %1
DEL %1
GOTO :EOF
Run Code Online (Sandbox Code Playgroud)