1

让我设置我的问题的阶段。我有一个文件夹 ( FOLDER_ABC)。在该文件夹中,有一个用于我的应用程序的文件夹,其中包括一个唯一且始终在变化的版本号 ( application-v1.3.4)。在该文件夹中,有应用程序 ( application-v1.3.4.exe) - 它也会定期更改。

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

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

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

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

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

:FINISH
ECHO THE END
exit

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

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

3 回答 3

1

我不确定这是否是您的问题,但可能;是导致问题。您不会;在批处理文件中终止命令。

不需要临时文件。使用 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
于 2013-07-02T16:59:47.543 回答
1

你可以试试:

FOR /f "delims=" %%G IN ('dir /b /a-d *.exe') DO start "" "%%~G"
于 2013-07-02T16:44:31.570 回答
1

尝试使用 START 命令:

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

如果实现您想要的,可能还有其他更好的方法,例如,如果您知道 exe 始终与其目录具有相同的名称,并且只有一个这样的目录,您可以执行以下操作:

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

更新

来自评论:

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

在这种情况下,您可以尝试以下操作:

for /d %%i in (application-v*) do for %%j in (%%i\*.exe) do start %%j
于 2013-07-02T16:07:08.093 回答