目錄
1、文件大小比較
2、獲取目錄信息
3、判斷空目錄
4、判斷文件是否在path中
1、FileSizeComp
函數 FileSizeComp 比較指定文件的大小。
| :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :FileSizeComp %file% %operand% %size% :: :: 作者:Ritchie Lawrence, 2003-08-22. 版本 1.0 :: :: 功能:比較指定文件的大小。如果結果為真,Errorlevel 被設置為 0,如果結果為 :: 假,Errorlevel 被設置為 1,如果找不到文件,Errorlevel 被設置為 0。 :: 適用于 NT4/2000/XP/2003. :: :: 參數:%1 待比較的文件(傳值調用) :: %2 比較操作符 <EQU | NEQ | LSS | LEQ | GTR | GEQ> (傳值調用) :: %3 以字節為單位的待比較的大?。▊髦嫡{用) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS & set "filter=2^>nul^|findstr/b /v /c:" "" for /f "tokens=3" %%a in ('dir/-c %1 %filter%') do set z=%%a 0000000000000 if not defined z (endlocal & fc;: 2>nul & goto :EOF) else (set z=%z:~0,13%) set "c=%3 0000000000000" & call set "c=%%c:~0,13%%" for /f "tokens=1-4" %%a in ("%z% %c%") do set "z=%%b%%a" & set "c=%%d%%c" (md;2>nul & if "%z%" %2 "%c%" ver>nul) & (endlocal & goto:EOF) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
參數
%1 待比較的文件(傳值調用)
%2 比較操作符 <EQU | NEQ | LSS | LEQ | GTR | GEQ> (傳值調用)
%3 以字節為單位的待比較的大?。▊髦嫡{用)
返回值
見(jiàn)上述參數。
實(shí)例
@echo off & setlocal ENABLEEXTENSIONS
call :FileSizeComp c:\logs\backup.log GTR 1048576 || goto :EOF
echo/c:\logs\backup.log is larger than 1MB
goto :EOF
備注
操作符(第二個(gè)參數)必須使用大寫(xiě),否則該函數在 Windows NT 4.0 下會(huì )失敗。如果需要一個(gè)非 Windows NT 4.0 的解決方案,使用 Windows 2000 及以后的系統中的增強的參數編輯器將更加高效。比如:
@echo off & setlocal ENABLEEXTENSIONS
for %%a in (c:\logs\backup.log) do if %%~za LEQ 1048576 goto :EOF
echo/c:\logs\backup.log 大于 1MB
goto :EOF
2、GetDirStats
函數 GetDirStats 可以獲取指定目錄中的文件個(gè)數、子文件夾個(gè)數以及目錄的大小。
| :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :GetDirStats %dir% files dirs bytes :: :: 作者:Ritchie Lawrence, updated 2003-09-18. 版本 1.1 :: :: 功能:獲取指定目錄中的文件個(gè)數、子文件夾個(gè)數以及目錄大?。ò?(includes :: 子文件夾、隱藏/系統文件及目錄)。適用于 NT4/2000/XP/2003 :: :: 參數:%1 路徑名稱(chēng),絕對路徑或者相對路徑(傳值調用) :: %2 該變量用于接受文件個(gè)數(引用調用) :: %3 該變量用于接受子文件夾個(gè)數(引用調用) :: %4 該變量用于接受目錄大?。ㄒ谜{用) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS & set "var=" pushd %1 2>nul || (md;2>nul & endlocal & goto :EOF) for /f "tokens=1-5* delims=," %%a in ('compact/s /q^|findstr ^^^^[0-O]') ^ do (call set "var=%%var%% %%a%%b%%c%%d%%e") for /f "tokens=2,5,15" %%a in ('echo/%var%') do (popd & endlocal ^ & set "%4=%%c" & set/a %3=%%b-1 & set/a "%2=%%a-%%b+1" & goto :EOF) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
參數
%1 路徑名稱(chēng),絕對路徑或者相對路徑(傳值調用)
%2 該變量用于接受文件個(gè)數(引用調用)
%3 該變量用于接受子文件夾個(gè)數(引用調用)
%4 該變量用于接受目錄大?。ㄒ谜{用)
返回值
如果函數成功,errorlevel 被設置為 0,如果函數失?。ū热?,由于非法路徑或者缺少參數),errorlevel 被設置為 1。
實(shí)例
@echo off & setlocal ENABLEEXTENSIONS
call :GetDirStats %SystemRoot% f d b
echo/%SystemRoot% 有 %f% 個(gè)文件和 %d% 目錄,總大小是 %b% 字節。
goto :EOF
備注
函數 GetDirStats 返回的統計信息和 Windows 資源管理器是相同的。如果發(fā)現差異,可能是因為在枚舉中包括了 TEMP 文件夾。
參考
FileSizeComp
3、IsDirEmpty
函數 IsDirEmpty 指定的目錄是否為空。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :IsDirEmpty %dir% :: :: 作者:Ritchie Lawrence, 2003-09-22. 版本 1.0 :: :: 功能:如果指定目錄為空,errorlevel 被設置為 0,如果目錄非空或不存在, :: errorlevel 被設置為一個(gè)非 0 值。 :: 適用于 NT4/2000/XP/2003. :: :: 參數:%1 待檢測的目錄名稱(chēng)(傳值調用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS & dir/ad %1 >nul 2>nul || (endlocal & goto :EOF) set i=0 & for /f %%a in ('dir %1/a/b 2^>nul') do set/a "i+=1" md;2>nul & (if %i%==0 ver>nul) & endlocal & goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
參數
%1 待檢測的目錄名稱(chēng)(傳值調用)
返回值
如果指定目錄中沒(méi)有任何文件(包括系統/隱藏文件)和子文件夾。errorlevel 被設置為 0,如果目錄非空或不存在,errorlevel 被設置為一個(gè)非 0 值。
實(shí)例
@echo off & setlocal ENABLEEXTENSIONS
set var="c:\test dir"
call :IsDirEmpty %var% && echo/%var% 為空
goto :EOF
備注
無(wú)。
參考
GetDirStats
4、IsInPath
函數 IsInPath 可以判斷指定文件是否在當前目錄或者 path 變量聲明的目錄中。
| :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :IsInPath %filelist% :: :: 作者:Ritchie Lawrence, 2003-11-29. 版本 1.0 :: :: Func: 判斷指定文件是否在當前目錄或者 path 變量聲明的目錄中。 :: 如果可以找到指定的所有文件,errorlevel 被設置為 0,否則被設置為非 0。 :: 適用于 NT4/2000/XP/2003. :: :: 參數:%1 以空白符分開(kāi)的指定文件列表(傳值調用) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS & set "path=.;%path%" & set "i=" for %%a in (%*) do for %%b in (%%a) do if not exist "%%~$PATH:b" set "i=1" ver>nul & if defined i md;2>nul & endlocal & goto :EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
參數
%1 以空格分開(kāi)的指定文件列表(傳值調用)
返回值
見(jiàn)上述參數。
實(shí)例
@echo off & setlocal ENABLEEXTENSIONS
set "tools="
set "tools=%tools% ping.exe"
set "tools=%tools% find.exe"
set "tools=%tools% "exe with space in name.exe""
set "tools=%tools% drivers\etc\hosts"
call :IsInPath %tools% || (
>&2echo/錯誤:無(wú)法找到代碼所需文件。
md;2>nul & goto :EOF
)
rem 其余代碼放到這里
goto :EOF
備注
空格,制表符和分好都被看做是空白符。
參考
無(wú)。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。