Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在批处理文件中运行for语句?_Batch File_Cmd - Fatal编程技术网

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

Batch file 在批处理文件中运行for语句?,batch-file,cmd,Batch File,Cmd,我想导航到一个文件夹,并删除该文件夹中不是特定文件的所有文件 我的命令如下: cd "bin\drivers" && for %i in (*.*) do if not %i == lol.exe del %i 但是,当我运行此命令时,批处理文件会打开并立即关闭,当批处理文件中只有for语句时,也会发生同样的情况 我知道cd命令可以工作,我知道for命令也可以工作(仅在cmd中),当我在drivers文件夹中打开cmd并在(*.*)中为%I发送以下命令,如果不是%I==lol

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

我的命令如下:

cd "bin\drivers" && for %i in (*.*) do if not %i == lol.exe del %i 
但是,当我运行此命令时,批处理文件会打开并立即关闭,当批处理文件中只有for语句时,也会发生同样的情况

我知道cd命令可以工作,我知道for命令也可以工作(仅在cmd中),当我在drivers文件夹中打开cmd并在(*.*)中为%I发送以下命令
,如果不是%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" 
使用上面的条件
&&
是可以的,这意味着如果不能成功地
cd
它将不会启动
for
循环,我们只是
转到:eof
以确保您不会在错误的目录中运行delete

@echo off
cd /d "bin\drivers" || goto :eof
for %%i in (*) do if not "%%~i"=="lol.exe" del "%%~i" 
其次,您也不需要使用cd,也可以使用
pushd
popd
来存储上一个目录到
popd

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

/I
添加到
if
部分:
if/I不是“%%I”==“lol.exe”…
。。。