使用bat脚本删除除一个文件循环外的所有文件

时间:2017-08-14 16:07:12

标签: windows batch-file command-line del

我在批处理文件中有一个循环来删除目录中的所有文件(Windows 7)。但它仍然挂起,因为它仍然将命令发送到屏幕,即使我认为我已经压制它。这是我使用的命令:

for %i in (*) do if not %i == UPDATE.BAT del /s %i >nul 2>&1

测试了我的批处理脚本,日志显示它在此命令处停止。在命令行测试命令,输出" del / s file.ext> nul 2>& 1"命令提示目录中的每个文件,这是导致我的批处理文件挂起的原因。

我需要在这里更改什么?

1 个答案:

答案 0 :(得分:2)

如果这是直接在打开的cmd窗口而不是批处理,则 您可以使用前导@符号来抑制当前命令的输出。

@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