2016-07-21 2 views
1

私はバッチファイルどのようにドライブスペースを取得し、CMDを開いたままにするバッチファイルを実行できますか?私は自分自身でCMDのループのために、それだけで正常に動作し実行すると

/k 

cd c:\ 

for /f "tokens=1-3" %a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"') do @echo wsh.echo "%b" ^& " free=" ^& FormatNumber^(cdbl^(%a^)/1024/1024/1024, 2^)^& " GiB"^& " size=" ^& FormatNumber^(cdbl^(%c^)/1024/1024/1024, 2^)^& " GiB" > %temp%\tmp.vbs & @if not "%c"=="" @echo(& @cscript //nologo %temp%\tmp.vbs & del %temp%\tmp.vbs 

pause 

として、これを実行していますよ。しかし、バッチファイルで実行しようとすると、情報を取得する前にCMDが終了します。実際にはディレクトリをc:\に変更することもできませんが、forループがバッチファイルに追加された後にのみ実行されます。 CMDが処理する方法を知るためにループを何かで事前に修正する必要がありますか?あなたは、バッチファイルで次のように行う必要があります

答えて

1

:バッチファイルとしてそれを実行したときにそう%aそれを逃れるために、変数にサインパーセントにを追加する必要があります

%%aと息子である必要があります。.. 。

@echo off 
for /f "tokens=1-3" %%a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"') do @echo wsh.echo "%%b" ^& " free=" ^& FormatNumber^(cdbl^(%%a^)/1024/1024/1024, 2^)^& " GiB"^& " size=" ^& FormatNumber^(cdbl^(%%c^)/1024/1024/1024, 2^)^& " GiB" > %temp%\tmp.vbs & @if not "%%c"=="" @echo(& @cscript //nologo %temp%\tmp.vbs & del %temp%\tmp.vbs 
pause 
+0

これは機能します。私はエコーをオフにしようとしていたと思ったが、私はtypo'dか何かをしなければならなかった。どうもありがとうございました。 – user3799026

関連する問題