我想告訴我什麼時候硬盤空間不足。我正在運行Windows 7 Professional,我認爲一個快速批處理文件可以處理這個問題。我會安排它每天運行一次。這是我到目前爲止:在DOS批處理腳本中檢查剩餘硬盤空間。如果條件不起作用
這使用「dir」命令和「find」命令查找剩餘的磁盤空間。它將值存儲在Var1中。 (這適用於我)
@echo off
FOR /F "tokens=*" %%i in ('dir ^| find "free"') do SET WinVer=%%i
FOR /F "tokens=1-3 delims=]-" %%A IN ("%WinVer%") DO (
SET Var1=%%A
)
這會從結果中拉出數字並刪除逗號。結果會像「111222333444」不帶引號(這爲我的作品)
set Var1=%Var1:~10,15%
set Var1=%Var1:,=%
此檢查在VAR1值小於100 GB(我假設的磁盤空間地板)。如果是這樣,它會創建一個名爲「lowSpace.txt」的文件,我會在某個時候看到。 (這對我不起作用)
if %Var1% leq 100000000000 dir > lowSpace.txt
這個「if」語句導致我的問題。我的可用磁盤空間大約爲150 GB(或150000000000),因此if條件應該失敗,並且「dir> lowSpace.txt」不應該在運行,但它無論如何都是。
如果我增加在「if」語句從千億向5000億,在文件被創建「lowSpace.txt」恆如我所料。
或者,如果我再次將常量從100000000000增加到500000000000,並將條件從「leq」更改爲「geq」,則會創建文件「lowSpace.txt」,當我期望它不會被創建時。
我是不是比較我的號碼錯了?或者我的「if」陳述有問題?該代碼似乎認爲150 GB大於和小於100 GB。
這裏是我完整的腳本:
@echo off
FOR /F "tokens=*" %%i in ('dir ^| find "free"') do SET WinVer=%%i
FOR /F "tokens=1-3 delims=]-" %%A IN ("%WinVer%") DO (
SET Var1=%%A
)
set Var1=%Var1:~10,15%
set Var1=%Var1:,=%
if %Var1% leq 100000000000 dir > lowSpace.txt
@echo on
@echo %Var1%
注意,100 GB是不是我真正的硬盤空間地板。我只是用這個數字來測試我的代碼。
我沒有意識到我的電話號碼可能太大。我採取了另一條路線,並將我的數字除以1000,我的代碼工作。謝謝。 – user1214135 2012-04-02 16:43:28