2015-05-18 46 views
0

有誰知道它是否有可能確保磁盤在批處理服務器上有足夠的空間?如何確保批量使用足夠的磁盤空間?

我有一個批處理腳本循環,在這我想添加一個部分,確保磁盤上有足夠的空間,並給我一個消息,如果沒有。像這樣,很容易解釋:

Check diskspace 
If below 10mb free space 
    echo low diskspace (& probably delete temp files or something) 
    else continue 

感謝您的任何幫助!

回答

1

這使用dir命令的輸出來檢索可用空間。所有的測試都是在一個子程序中進行的,該子程序接收作爲參數的「驅動器」以檢查所需的字節數。退出時,如果沒有足夠的可用空間,則會引發錯誤級別。

批處理文件中的算術是有限的2^31有符號整數,因此處理大於2147483647的值,並使用超過2GB的存儲單元操作時需要更多代碼。爲了避免這種情況,所有的信息都以字節的形式顯示/檢索,填充和比較爲字符串。

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    call :checkFreeSpace d: 123456789 && echo OK || echo No space 

    call :checkFreeSpace "\\10.0.0.1\c$" 2000000000 
    if errorlevel 1 (
     echo No space 
    ) else (
     echo OK 
    ) 

    goto :eof 

:checkFreeSpace drive spaceRequired 
    setlocal enableextensions disabledelayedexpansion 
    set "pad=0000000000000000000000000" 
    set "required=%pad%%~2" 
    for %%d in ("%~1\.") do for /f "tokens=3" %%a in (' 
     dir /a /-c "%%~fd" 2^>nul ^| findstr /b /l /c:" " 
    ') do set "freeSpace=%pad%%%a" 
    if "%freeSpace:~-25%" geq "%required:~-25%" exit /b 0 
    exit /b 1 

:這種方法有一個警告。如果指示的目標是驅動器根目錄,並且其中沒有任何文件/文件夾,則dir命令將不會找到任何要列出的內容,並且可用空間不會包含在其輸出中,從而使測試失敗,因爲可用空間將爲0

+0

哦哇,謝謝你的偉大答案。知道在那裏!我必須承認我有一些問題使它工作。我可能在一個新的初學者階段。我認爲我的第一個問題將是如何調用:checkfreespace命令。我需要其他的腳本嗎? – MadsTheMan

+0

@Excessium,發佈的代碼顯示用法。最簡單的方法是將子例程複製/粘貼到批處理文件的末尾,並如示例中所示從代碼中調用它。 –

+0

啊好的,我很感謝你的幫助。我會盡力,明天盡我所能。感謝您的回覆。 – MadsTheMan

相關問題