2017-02-15 68 views
0

我可以知道如何從項目路徑命名爲「FullBuild」的最新文件夾?在批處理腳本中獲取現有文件夾

在我的/ PROJ路徑,有5個文件夾,包括 '構建' 或 'FullBuild' 文件夾下面的:

  1. 2017-02-01_10-00 | -Build_110053
  2. 2017-02- 02_10-00 | -FullBuild_120043
  3. 2017-02-03_10-00 | -Build_105043
  4. 2017-02-04_10-00 | -FullBuild_120043
  5. 2017-02-05_10-00 | -Build_105043

我嘗試命令

for /f "delims=" %%F in ('dir /a:d /b /o:d "%PROJ%\*\FullBuild_*"') do set "lastFullBuild=%%F" 
echo Last Full Build is: %lastFullBuild% 

文件名,目錄名或卷標語法不正確。 最後全力打造爲2017-02-05_10-00

回答

1
@ECHO Off 
SETLOCAL 
SET "sourcedir=U:\sourcedir\project" 
SET "fullbuild=None found" 
FOR /f "delims=" %%a IN (
'dir /b /ad /o-n "%sourcedir%\*" 2^>nul' 
) DO (
FOR /f "delims=" %%f IN (
    'dir /b /ad "%sourcedir%\%%a\Fullbuild_*" 2^>nul' 
) DO SET "fullbuild=%%a"&GOTO found 
) 
) 

:found 
ECHO Last full build : %fullbuild% 

GOTO :EOF 

你需要改變的sourcedir設置,以滿足您的具體情況。

將您的父目錄 - fullbuild目錄的名稱格式設置爲YYYYMMDDhhmm,然後以反向名稱順序(/ o-n)讀取這些目錄將按逆日期順序進行處理。

使用%%a中的每個目錄名稱,查看下面是否有fullbuild目錄。如果存在,請指定父級的名稱並在fullbuild中用該名稱強制終止該循環。如果根本找不到fullbuild目錄,則None found值將在循環中生存。

請注意,在dir命令中使用2^>nul可以在找不到任何結果的情況下抑制錯誤消息。 2>nul取消錯誤報告,並且脫字符轉義符告訴cmd重定向器是dir而不是for的一部分。

相關問題