2016-04-01 22 views
1

Sürücü harfleri bulmaya çalışıyorum ve her sürücüde bir tmp.txt dosyası oluşturmaya çalışıyorum dosya oluşturabiliyorsa başka bir dosya oluşturmamaları gerekir. Ne yaptım ama beklendiği gibi çalışmadı.Toplu iş akışı beklendiği gibi çalışmıyor

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

hatta sürücüler

+0

Bunun yerine, [bu soru] konusuna bakın (http://stackoverflow.com/q/21410817/886887). –

cevap

1

Değişim oluşturulan tmp.txt

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

eğer test.log tüm sürücüler için oluşturulamadı gösterir
for /f "tokens=4 delims= " %%# in ("%%a") do (
    if "%%~#" equ "created" (

diye bir şey yok result numaralı değere atamanın görünür nedeni ve daha sonra,numaralı telefonu çağırmanız gerekirve %result% yerine !result! kullanın (bkz. Sonsuz delayedexpansion ile ilgili öğeler.

Ayrıca, bir stil meselesi olarak, %%# çalıştığı göründüğünde, yalnızca (büyük/küçük harf duyarlı) alfabetik belgeler tarafından desteklenir ve Microsoft'un her zaman "sorunu" giderebileceği olasılığı vardır.