我想告诉我什么时候硬盘空间不足。我正在运行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