繁体   English   中英

在批处理文件中运行语句?

[英]Running for statement in a batch file?

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

我的命令如下:

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”的文件。

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

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

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

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

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

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

@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM