2013-06-26 67 views
0

我試圖做幾乎相同的內容:How do I increment a folder name using Windows batch?遞增與批處理文件的文件版本號

從本質上講,我想創建一個批處理文件可以通過目錄進行掃描,確定最高版本號,然後創建下一個順序。所以如果目錄包含:

New folder V1.0 
New folder V1.1 
New folder V1.3 

我想要批處理文件添加一個新文件夾V1.4。應該可行。問題是,劇本,我發現:

@echo off 
setlocal enableDelayedExpansion 
set "baseName=New_Folder" 
set "n=0" 
for /f "delims=" %%F in (
    '2^>nul dir /b /ad "%baseName%*."^|findstr /xri "%baseName%[0-9]*"' 
) do (
    set "name=%%F" 
    set "name=!name:*%baseName%=!" 
    if !name! gtr !n! set "n=!name!" 
) 
set /a n+=1 
md "%baseName%%n%" 

不使用文件夾名稱中帶有IE它與「New_Folder」而非「新建文件夾」的空間工作。我試着逃避的空間使用的各種排列^和」,例如,

set "baseName=New^ Folder" 
set "baseName=New" "Folder" 
set "baseName=New""^ ""Folder" 

等等,但是,我還沒有得到它的工作。

我知道,我可以通過改變我的文件名使用下劃線解決問題,但在這一點上,我想知道爲什麼不工作,如何解決它。

回答

3

這在這裏工作。

@echo off 
setlocal enableDelayedExpansion 
set "baseName=New Folder V1." 
set "n=0" 
for /f "delims=" %%F in (
    '2^>nul dir /b /ad "%baseName%*"^|findstr /xri /c:"%baseName%[0-9]*"' 
) do (
    set "name=%%F" 
    set "name=!name:*%baseName%=!" 
    if !name! gtr !n! set "n=!name!" 
) 
set /a n+=1 
md "%baseName%%n%" 
+1

...好的,那是有效的。 *它是如何工作的?不/ c指定一個文字字符串? – Firnagzen

+0

+1;這很好! – Endoro

+0

/c沒有指定文字字符串,它指定了搜索詞。在這種情況下,它是/ r告訴findstr/c參數中的文本應該被視爲正則表達式。 – Mark