Strona główna CMD C++ Hardware HTML i javascript Java Software SQL flag_united_kingdom flag_poland

CMD (Win7) - wyszukiwanie plików określonej wielkości.

Modyfikacja: 2011-11-14

Wyszukiwanie plików określonej wielkości w podanej lokalizacji, w przypadku częstego wykonywania tej czynności przy wykorzystaniu wbudowanego "okienkowego" narzędzia do przeszukiwania w systemie Win 7, może być zbyt czasochłonne (za dużo klikania :). Szybsze i łatwiejsze jest napisanie skryptu, który wyszukuje pliki określonej wagi.

W skrypcie przeszukującym ścieżkę w głąb w celu znalezienia plików spełniających warunek wykorzystano odpowiedni parametr poprzedzający ścieżkę do pliku %~z[pathToFile(string)], więcej parametrów jakie można użyć znajdziesz na stronie Command line parameters.

Sprawdzić wagę jednego pliku można na kilka sposobów np.: używając komendy dir, można też skorzystać z parametrów i pętli for, co w przypadku jednego pliku jest przesadą:

for %a in ("c:\temp\file.txt") DO (@echo size: %~za)

Poniżej skrypt, który umożliwia wyszukiwanie określonej wielkości plików w danej lokalizacji przyjmuje on trzy parametry:

  1. sposób przeszukiwania:
    • equ : równe
    • neq : różne
    • lss : mniejsze niż
    • leq : mniejsze równe
    • gtr : większe
    • geq : większe, równe
  2. wielkość pliku w bajtach
  3. folder docelowy

Przykład użycia:

find_file_size.bat equ 1024 c:\temp\

Kod źródłowy skryptu poniżej:

Drukuj Zaznacz kod
find_file_size.bat
@echo off
setlocal EnableDelayedExpansion


if "%1%" EQU "" (
	GOTO HELP
) else if "%3%" EQU "" (
	GOTO HELP
) 


set sc=!%~d$PATH:3%~s$PATH:3!

if not exist !sc! (
	@echo Nieprawidlowa sciezka: %3
	GOTO EXIT
) 

@echo Przeszukiwanie "%1" plikow o wadze %2
@echo Start: %3
@echo Start: !sc!

if exist "find_file_size.result" (
	del find_file_size.result
) 

if "%1%" equ "equ" (
	dir !sc! /s/b > find_file_size.out
	for /f "tokens=* delims= " %%a in (find_file_size.out) DO (
		if %%~za equ %2 (
			@echo %%a  
			@echo %%a >> find_file_size.result
			@echo size: %%~za
		)
	)
	GOTO EXIT
)

if "%1%" equ "neq" (
	dir !sc! /s/b > find_file_size.out
	for /f "tokens=* delims= " %%a in (find_file_size.out) DO (
		if %%~za neq %2 (
			@echo %%a  
			@echo %%a >> find_file_size.result
			@echo size: %%~za
		)
	)
	GOTO EXIT
)

if "%1%" equ "lss" (
	dir !sc! /s/b > find_file_size.out
	for /f "tokens=* delims= " %%a in (find_file_size.out) DO (
		if %%~za lss %2 (
			@echo %%a  
			@echo %%a >> find_file_size.result
			@echo size: %%~za
		)
	)
	GOTO EXIT
)

if "%1%" equ "leq" (
	dir !sc! /s/b > find_file_size.out
	for /f "tokens=* delims= " %%a in (find_file_size.out) DO (
		if %%~za leq %2 (
			@echo %%a  
			@echo %%a >> find_file_size.result
			@echo size: %%~za
		)
	)
	GOTO EXIT
)

if "%1%" equ "gtr" (
	dir !sc! /s/b > find_file_size.out
	for /f "tokens=* delims= " %%a in (find_file_size.out) DO (
		if %%~za gtr %2 (
			@echo %%a  
			@echo %%a >> find_file_size.result
			@echo size: %%~za
		)
	)
	GOTO EXIT
)

if "%1%" equ "geq" (
	dir !sc! /s/b > find_file_size.out
	for /f "tokens=* delims= " %%a in (find_file_size.out) DO (
		if %%~za geq %2 (
			@echo %%a  
			@echo %%a >> find_file_size.result
			@echo size: %%~za
		)
	)
	GOTO EXIT
)

:HELP
@echo ***************************************************************************** 
@echo Skrypt przyjmuje nastepujace parametry:
@echo [pierwszy] -   equ : rowne
@echo                neq : rozne
@echo                lss : mniejsze niz
@echo                leq : mniejsze rowne
@echo                gtr : wieksze
@echo                geq : wieksze, rowne
@echo [drugi]    - wielkosc pliku w bajtach
@echo [sciezka]  - folder docelowy
@echo.
@echo Przyklad
@echo findS.bat equ 1024 d:
@echo ***************************************************************************** 


:EXIT