For loop 在批处理文件中的for循环之后执行命令?

For loop 在批处理文件中的for循环之后执行命令?,for-loop,batch-file,cmd,For Loop,Batch File,Cmd,我有一个批处理文件,它目前做两件事,它首先进入所需的目录,然后它将运行for语句来删除每个不是特定文件的文件,bat文件的内容如下所示: cd "bin\drivers" && for %%i in (*.*) do if not %%i == lol.exe del %%i cd "bin\drivers" && for %%i in (*.*) do if not %%i == lol.exe del %%i && cd ../../../

我有一个批处理文件,它目前做两件事,它首先进入所需的目录,然后它将运行for语句来删除每个不是特定文件的文件,bat文件的内容如下所示:

cd "bin\drivers" && for %%i in (*.*) do if not %%i == lol.exe del %%i
cd "bin\drivers" && for %%i in (*.*) do if not %%i == lol.exe del %%i && cd ../../../ && start server
这非常有效,但在执行for语句之后,我想做一些其他事情,比如:

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

但问题是,虽然它在for循环后执行语句,但for循环只执行一次迭代,因此它只删除一个文件,并移动到bat文件中的下一个语句(即cd,然后启动服务器)。我能做些什么,使for语句后面的语句在整个for循环完成后执行,而不是只执行一次迭代?

这将首先循环,一旦循环完成,它将只执行服务器

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

根据我的评论,这里是你的一行,适当使用括号和符号

@CD-bin\drivers 2>NUL&((对于(*)中的%%#)Do@If/I非“%%#”===”lol.exe“Del”%%#“)&CD…...\..2>NUL&&启动服务器
但是,我不认为有任何理由更改目录,因此这可能更简单:

@(对于(bin\drivers\*)中的%%#执行@If/I非“%~nx”==”lol.exe“Del”%#“”&Start..\server

是的,可以使用多行命令,或者将单行命令括起来(不需要使用单行命令,这不会加快脚本的速度)。还要了解命令串联器,
&
和条件运算符,
&
之间的区别。第二个正是我要找的!我将它添加到我的文件中,现在它工作得很好,谢谢!感谢您的确认。第二个可能正是您所希望的,但第一个是exac这正是你“寻找”的东西!