2016-06-24 6 views
1

TempIOFileという名前のフォルダを作成するバッチファイルがあります。その後の実行では、TempIOFileフォルダーが存在することを認識し、フォルダーの増分バージョン(TempIOFile1、TempIOFile2など)を作成する必要があります。フォルダ名を増やす方法

は、私は、ファイルをインクリメントする動作するコードがあります:私はIF EXISTステートメントを使用しようとすると、

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 %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

私は'あなたが '理解することが遅れた拡張を参照してください! !! n! "' md "の代わりに%baseName %% n%" 'を使います。 – JosefZ

+0

書き込み 'もし存在する'%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%\" 

またはこれです。 (どこでも) `たbaseName`例えば、 `(括弧のコードブロック)内で定義_all_変数`にご理解を適用すると `MD「たbaseName:!!!

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

これはうまくいきました。ありがとう! – ketchfrayz

関連する問題