2016-04-01 31 views
1

ドライブ文字を見つけて、各ドライブに1つのtmp.txtファイルを作成しようとしています ファイルを作成することができれば、それ以外のファイルを作成する必要があります。私がやったことの下では、期待どおりに仕事をしなかった。バッチスクリプトが正常に動作しない

del volumes.txt 
del test.log 
mountvol | findstr :\ >> volumes.txt 
for /F "delims= " %%b in (volumes.txt) do (
    for /f "usebackq tokens=* delims=" %%a in (`fsutil file createnew %%btmp.txt 1 2^>^&1`) do (
    for /f "tokens=4 delims= " %%# in ("%%a") do set "result=%%~#" (
     if %result% equ "created" (
     echo File creted >> test.log 
    ) else (
     echo Failed to create >> test.log 
    ) 
    ) 
) 
) 

それはtmp.txtが

for /f "tokens=4 delims= " %%# in ("%%a") do (
    if "%%~#" equ "created" (

にドライブ

+0

[この質問](http://stackoverflow.com/q/21410817/886887)を参照してください。 –

答えて

1

変更

for /f "tokens=4 delims= " %%# in ("%%a") do set "result=%%~#" (
    if %result% equ "created" (

で作成した場合でもノーありtest.logにすべてのドライブの作成に失敗しまし示し値をresultに割り当てる明白な理由がある場合でも、を呼び出す必要があります%result%の代わりに!result!を使用してください(無限大のSoを参照してください。delayedexpansion)。

また、%%#が動作するように見えますが、ドキュメントでは(大文字と小文字を区別する)アルファベットのみがサポートされています。マイクロソフトが「問題」を「修正」する可能性は常にあります。

関連する問題