2013-05-29 29 views
0

我正在使用下面的批處理程序來獲取系統驅動器的詳細信息。打印文本文件中的循環值 - 批處理程序

@echo off 
setlocal enabledelayedexpansion 
for /f "tokens=1" %%d in (
'wmic logicaldisk where drivetype^=3 get deviceid ^| find ":"') do ( 
for /f "skip=1 tokens=1,* delims=:" %%a in ('fsutil volume diskfree %%d') do (
    Call :ConvertBytes %%b GB Gigs 
    Call :ConvertBytes %%b MB Megs 
    echo %%d - %%a: !Gigs! GB (^!Megs! MB^) 
    set s=%%d - %%a: !Gigs! GB (^!Megs! MB^) 
    echo %s% >>C:\myfile.txt 
    ) 
) 
pause;  
goto :eof 
:ConvertBytes bytes unit ret 
setlocal 
if "%~2" EQU "KB" set val=/1024 
if "%~2" EQU "MB" set val=/1024/1024 
if "%~2" EQU "GB" set val=/1024/1024/1024 
> %temp%\tmp.vbs echo wsh.echo FormatNumber(eval(%~1%val%),0) 
for /f "delims=" %%a in ( 
'cscript //nologo %temp%\tmp.vbs' 
) do endlocal & set %~3=%%a 
del %temp%\tmp.vbs 

此批次的輸出將是:

C: - Total # of bytes    : 98 GB (99,900 MB) 
C: - Total # of avail free bytes : 32 GB (33,122 MB) 
D: - Total # of bytes    : 146 GB (150,000 MB) 
D: - Total # of avail free bytes : 138 GB (141,728 MB) 
E: - Total # of bytes    : 222 GB (226,938 MB) 
E: - Total # of avail free bytes : 208 GB (213,473 MB) 
Press any key to continue . . . 

我在這裏試圖寫該批次的輸出到一個文本文件中。因爲我在for循環中給出echo %s% >>C:\myfile.txt語句。但其在文本文件中打印ECHO is off.

我曾嘗試在暫停之前給出echo語句;命令,同時這樣做只有輸出的最後一行(E: - Total # of avail free bytes : 208 GB (213,473 MB))被寫入文本文件中。

如何打印文本文件中的所有6行。

回答

1

與此

>>C:\myfile.txt echo !s! 
+0

完美替換此echo %s% >>C:\myfile.txt

......... – RobinHood