2016-07-21 5 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

이것은 작동합니다! 내가 에코를 시도했다고 생각했는데 오타가 틀림 없어. 고맙습니다. – user3799026