首先,與
@echo off
setlocal
開始你的批處理腳本.. 。以防止顯示正在執行的命令,並將變量的範圍限制爲該正在運行的腳本。
接下來,要捕獲命令的輸出,請使用for /f
。有關更多信息,請參閱cmd控制檯中的help for
。
有幾種方法可以檢查Windows中硬盤的可用空間。一種是使用wmic.exe
執行wmi查詢。下面是捕獲的自由空間至可變的例子:
for /f "tokens=2 delims=," %%I in ('wmic logicaldisk where "name='c:'" get freespace^,size /format:csv') do set "freespace=%%I"
echo %freespace%
從wmic
捕獲是棘手的,因爲WMI數據在UCS-2的Little Endian編碼如果我記得正確。它與控制檯一起擰緊。這就是爲什麼查詢包含「大小」作爲一次性價值。
另一個-繁瑣以下方式來獲得的自由空間是從dir
這樣捕獲輸出:
for /f "tokens=3" %%I in ('dir ^| find /i "bytes free"') do set "freespace=%%I"
set "freespace=%freespace:,=%"
echo %freespace%
在第二個例子中,號碼包含逗號,這使得整數比較不可能沒有剝離的那些逗號。這就是%freespace:,=%
所做的 - 它執行子字符串替換,不用替換,
。 See this page更多的字符串操作技巧。
無論哪種方式,比較大小,做到這一點:
if %freespace% gtr 85 (
echo 1
) else (
echo 0
)
我的unix已生鏽;這樣的輸出是什麼樣的? – SomethingDark
freeSpace ='df/projects | grep -v'Filesystem'| awk'{print $ 4}'| sed's /%//''if if [$ {freeSpace} -ge 85];然後 \t echo「1」 else \t echo「0」 fi輸出應該是0或1 – testprabhu
有'GREP'和'AWK'的Windows端口和許多其他舊的基於Unix命令。 – Squashman