使用bat脚本删除除一个文件循环外的所有文件
Delete all but one file loop with bat script
我在批处理文件中有一个循环,用于删除目录中除一个文件外的所有文件 (Windows 7)。但它挂断了,因为它仍然向屏幕发送命令,即使我认为我已经抑制了它。这是我正在使用的命令:
for %i in (*) do if not %i == UPDATE.BAT del /s %i >nul 2>&1
测试了我的批处理脚本,日志显示它在这个命令处停止。在命令行测试命令,将 "del /s file.ext >nul 2>&1" 命令输出到目录中每个文件的提示符,这就是导致我的批处理文件挂起的原因。
这里需要改什么?
如果这是直接在打开的命令中 window 而不是批处理,
您可以使用前导 @
符号来抑制当前命令的输出。
@for %i in (*) do @if /i not "%i"=="UPDATE.BAT" @del "%i" >nul 2>&1
在带有 @Echo off
的命令的批量切换输出中,将 for 变量的 %
符号加倍。
@Echo off
for %%i in (*) do if /i not "%%i"=="%~nx0" del "%%i" >nul 2>&1
我在批处理文件中有一个循环,用于删除目录中除一个文件外的所有文件 (Windows 7)。但它挂断了,因为它仍然向屏幕发送命令,即使我认为我已经抑制了它。这是我正在使用的命令:
for %i in (*) do if not %i == UPDATE.BAT del /s %i >nul 2>&1
测试了我的批处理脚本,日志显示它在这个命令处停止。在命令行测试命令,将 "del /s file.ext >nul 2>&1" 命令输出到目录中每个文件的提示符,这就是导致我的批处理文件挂起的原因。
这里需要改什么?
如果这是直接在打开的命令中 window 而不是批处理,
您可以使用前导 @
符号来抑制当前命令的输出。
@for %i in (*) do @if /i not "%i"=="UPDATE.BAT" @del "%i" >nul 2>&1
在带有 @Echo off
的命令的批量切换输出中,将 for 变量的 %
符号加倍。
@Echo off
for %%i in (*) do if /i not "%%i"=="%~nx0" del "%%i" >nul 2>&1