【问题标题】:How can I run a batch file which gets drive space and keeps CMD open?如何运行获取驱动器空间并保持 CMD 打开的批处理文件?
【发布时间】:2016-07-21 15:02:53
【问题描述】:

我将其作为批处理文件运行

/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 中单独运行 for 循环时,它工作得很好。但是当我尝试在批处理文件中运行它时,它会在我获取信息之前关闭 CMD。它也无法实际将目录更改为 c:\,但只有在将 for 循环添加到批处理文件后。我是否需要用一些东西预先修复循环,以便 CMD 知道如何处理它?

【问题讨论】:

    标签: windows batch-file cmd space drive


    【解决方案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
    

    【讨论】:

    • 这行得通!我以为我已经尝试过回声,但我一定是打错了或什么的。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多