【问题标题】:Batch File - FOR LOOP批处理文件 - FOR LOOP
【发布时间】:2013-07-02 16:02:46
【问题描述】:

让我来设置我的问题的阶段。我有一个文件夹 (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

【问题讨论】:

    标签: windows for-loop batch-file cmd


    【解决方案1】:

    你可以试试:

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

    【讨论】:

      【解决方案2】:

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

      不需要临时文件。使用 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
      

      【讨论】:

      • 谢谢。是的,我想出了类似的方法。我将它添加到上面的问题中。没有足够的学分来回答我自己的问题。谢谢!还有“;”是一个错字。对此感到抱歉。
      【解决方案3】:

      尝试使用 START 命令:

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

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

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

      更新

      来自 cmets:

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

      在这种情况下,您可以尝试以下方法:

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

      【讨论】:

      • 我刚刚意识到的唯一问题是应用程序文件夹和应用程序名称并不总是相同的。我希望它启动 app 文件夹中的任何 .exe。 C:\FOLDER_ABC\application-v1.3.4\Helloworld-v1.3.4.exe
      • 我尝试将应用程序版本添加到参数中,就像我对文件夹所做的那样,但我收到以下错误:'C:\FOLDER_ABC\application-v1.3.4\application-v1.3.4 .exe' 不是内部或外部命令、可运行程序或批处理文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 2012-06-23
      • 2021-08-08
      • 1970-01-01
      • 2023-04-08
      • 2013-03-14
      • 2016-05-07
      相关资源
      最近更新 更多