簡體   English   中英

批處理文件 - FOR LOOP

[英]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 * FOLDER_ABC的任何文件夾創建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循環有關嗎? 我怎樣才能繼續:完成?

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

嘗試使用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

你可以試試:

FOR /f "delims=" %%G IN ('dir /b /a-d *.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM