2016-06-24 84 views
1

我有一個批處理文件創建一個名爲TempIOFile的文件夾。在後續運行中,它應該識別出TempIOFile文件夾存在,並創建該文件夾的增量版本(TempIOFile1,TempIOFile2等)。如何增加文件夾名稱

我有一些代碼工程增加文件:

set "baseName=TempIOFile" 
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%" 

然而,當我嘗試使用IF EXIST聲明我得到一個錯誤:文件名,目錄名或卷標語法不正確。

IF EXIST %userprofile%\desktop\TempIOFile (
set "baseName=TempIOFile" 
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%" 
) ELSE (
MKDIR %userprofile%\desktop\TempIOFile 

我不知道爲什麼,這是行不通的。 TempIOFile已創建,但在後續運行中增加的版本不是。誰能幫忙?

+0

我看到你明白''延遲擴展:應用您瞭解了'(pa​​renthesised代碼塊)中定義_all_變量',比如'baseName的'(無處不在)和'MD「baseName的!! !n!「'而不是'md」%baseName %% n%「'。 – JosefZ

+0

寫'IF EXIST「%userprofile%\ desktop \ TempIOFile」'... – aschipfl

回答

1

應該這樣簡單。除非我不理解你的問題。

@echo off 

set "Num=" 
:loop 
If EXIST "%userprofile%\desktop\TempIOFile%Num%\" (
    set /A Num+=1 
    goto loop 
) 

md "%userprofile%\desktop\TempIOFile%Num%\" 

或這個。

@echo off 
set "Num=" 
:loop 
(md "%userprofile%\desktop\TempIOFile%Num%\" > nul 2>&1) || (set /A Num+=1 & goto loop) 
+0

這工作。謝謝! – ketchfrayz