【问题标题】:Running for statement in a batch file?在批处理文件中运行语句?
【发布时间】:2023-04-09 14:44:01
【问题描述】:

我想导航到一个文件夹,并删除该文件夹中不是特定文件的所有文件。

我的命令如下:

cd "bin\drivers" && for %i in (*.*) do if not %i == lol.exe del %i 

但是,当我运行它时,批处理文件会打开并立即关闭,当它只是批处理文件中的 for 语句时也会发生同样的事情。

我知道 cd 命令有效,并且我知道 for 命令也有效(仅在 cmd 中),当我在驱动程序文件夹中打开一个 cmd 并发送以下命令 for %i in (*.*) do if not %i == lol.exe del %i 时,它将按预期工作并删除每个不是“lol.exe”的文件。

我的问题是如何在批处理文件中运行此命令?

【问题讨论】:

  • /I 添加到if 部分:if /I not "%%i"=="lol.exe" ......

标签: batch-file cmd


【解决方案1】:

您需要在批处理文件中分配双 %。还要始终将变量用双引号括起来,以确保您不会匹配意外的空格:

@echo off
cd /d "bin\drivers" && for %%i in (*) do if not "%%~i"=="lol.exe" del "%%~i" 

使用上面的条件&&是可以的,这意味着它不会启动for循环如果它不能成功cd我们只是goto :eof以确保你不会在错误的目录中运行删除。

@echo off
cd /d "bin\drivers" || goto :eof
for %%i in (*) do if not "%%~i"=="lol.exe" del "%%~i" 

其次,你也不需要使用cd,也可以使用pushdpopd,将上一个目录存储到popd一次完成。

@echo off
pushd "bin\drivers" || goto :eof
for %%i in (*) do if not "%%~i"=="lol.exe" del "%%~i"
popd

【讨论】:

    【解决方案2】:

    您应该在批处理文件中添加符号百分比%

    cd "bin\drivers" && for %%i in (*.*) do if not %%i == lol.exe del %%i
    

    【讨论】:

      猜你喜欢
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2021-06-23
      • 1970-01-01
      相关资源
      最近更新 更多