batch file – FOR LOOP

让我来谈谈我的问题的阶段。 我有一个文件夹( FOLDER_ABC )。 在该文件夹中,有一个用于我的应用程序的文件夹,其中包括一个唯一且总是变化的版本号( application-v1.3.4 )。 在该文件夹中,有应用程序( application-v1.3.4.exe ) – 也将周期性地更改。

 C:\FOLDER_ABC\application-v1.3.4\application-v1.3.4.exe 

在下面的这一节中,我将为任何以application *开头的文件夹创buildFOLDER_ABC的目录列表,并将该文件夹名称存储到名为directory.txt的文件中。 然后我创build一个参数并将该目录存储到其中。 我这样做,而不是直接将完整path应用到目录或文件,因为版本会改变,我不想硬编码批处理脚本。

 cd C:\FOLDER_ABC\ dir application* /b /ad>"C:\FOLDER_ABC\directory.txt" set /p verdir= <C:\FOLDER_ABC\directory.txt 

这是我的问题。 在下面的部分,我试图让我的批处理脚本运行application*.exe文件,并继续与我的batch file。 它目前运行我的应用程序,但它挂起,不会继续我的批处理脚本的其余部分。 我对这个编码真的很陌生,所以我很感激这个帮助。 我认为这可能是有关我没有正确closuresFOR循环? 我怎样才能继续:FINISH?

 cd "C:\FOLDER_ABC\%verdir%\" FOR /f "tokens=*" %%G IN ('dir /b *.exe') DO %%G; :FINISH ECHO THE END exit 

想通了,但没有足够的StackOverflow学分来回答我自己的问题。 我的解决scheme列在下面。 感谢大家。 你指出了我正确的方向。

 cd "C:\FOLDER_ABC\%verdir%\" FOR %%G in (*.exe) DO START %%G 

你可以试试:

 FOR /f "delims=" %%G IN ('dir /b /ad *.exe') DO start "" "%%~G" 

我不确定这是否是你的问题,但有可能的是; 正在造成问题。 你不用终止命令; 在批处理文件中。

不需要临时文件。 用FOR代码可以大大简化:

 pushd c:\folder_abc for /d %%F in (application*) do cd "%%F" for %%F in (*.exe) do "%%F" :FINISH ECHO THE END exit /b 

尝试使用START命令:

 FOR /f "tokens=*" %%G IN ('dir /b *.exe') DO START %%G; 

如果你想得到你想要的东西,可能有其他更好的方法,例如,如果你知道这个exe文件总是和它的目录有相同的名字,并且只有一个这样的目录,你可以这样做:

 FOR /D %%i in (application-v*) DO START %i\%i.exe 

UPDATE

来自评论:

我唯一的问题,我刚才意识到,应用程序文件夹和应用程序名称并不总是相同的。

在这种情况下,你可以尝试像这样:

 for /d %%i in (application-v*) do for %%j in (%%i\*.exe) do start %%j