1
文件夾大小限制,我發現很多類似的問題的解決方案,將刪除最早的文件,但我不知道是否有可能創建一條刪除舊文件一次的腳本預設的文件夾大小限制已達到?如何創建一個批處理腳本,當達到
文件夾大小限制,我發現很多類似的問題的解決方案,將刪除最早的文件,但我不知道是否有可能創建一條刪除舊文件一次的腳本預設的文件夾大小限制已達到?如何創建一個批處理腳本,當達到
您需要解決兩個問題。
首先,您需要計算文件夾大小。使用類似於此
:foldersize
set sz=0
for %%F in (%1\*.*) do (
set /a kb = %%~zF/1024
set /a sz = !sz! + !kb!
echo %%F %%~zF !kb! !sz!
)
goto :eof
二代碼,你需要認識到舊文件並刪除它們,直到達到大小
for /F "tokens=*" %%F in ('dir /A-D /OD /B %1\*.*') do (
if !sz! geq !targetsize! (
call :filesize %1\%%F
del %1\%%F
set /a sz = !sz! - !kb!
) else (
goto :eof
)
)
goto :eof
:filesize
set /a kb = %~z1/1024
goto :eof
把所有拼在一起......
@echo off
setlocal enabledelayedexpansion
set /a targetsize=%2
call :foldersize %1
for /F "tokens=*" %%F in ('dir /A-D /OD /B %1\*.*') do (
if !sz! geq !targetsize! (
call :filesize %1\%%F
del %1\%%F
set /a sz = !sz! - !kb!
) else (
echo Done... %1 size is now !sz! KB
goto :eof
)
)
echo Not completely done... %1 size is still !sz! KB
goto :eof
:filesize
set /a kb = %~z1/1024
goto :eof
:foldersize
set sz=0
for %%F in (%1\*.*) do (
set /a kb = %%~zF/1024
set /a sz = !sz! + !kb!
)
goto :eof
測試和測試和測試,因爲它不會將文件移動到垃圾箱,但會永久刪除文件。
此外,如果您有要刪除的只讀文件,您可能需要指定/F
選項。
在這種情況下,你有文件夾中的子文件夾和你想利用這些存入該帳戶文件夾的大小和要刪除舊文件,事情可能會變得更加複雜。
大小的計算是這樣的
:foldersizerecurse
set sz=0
for /F %%F in ('dir /OD /B *.*') do (
set /a kb = %%~zF/1024
set /a sz = !sz! + !kb!
echo %%F %%~zF !kb! !sz!
)
goto :eof
並刪除舊文件..你需要管「DIR/S」命令的輸出進行排序和按日期排序。我覺得很累。
非常感謝!請原諒我的無知,但我該如何設置文件夾的目錄?如果我保存d批處理文件:\,我想使用的文件夾爲d:\數據? – davivid
我通常安裝在'\ Program Files文件\ bats'夾我所有的蝙蝠,和我在'PATH'環境變量有這個目錄。然後調用它,你只需鍵入蝙蝠文件名,指定目標文件夾和KB所需的大小'KeepFolderSizeBelow d:\數據204800'保持d:\ DATA文件夾下200MB。 –