bat實現命令行全盤遍歷搜索文件


背景:當想要查找一個文件時,記得放在某個盤里。手動去遍歷時感覺好心累,找了半天還是沒有找着(雖然win有自帶的搜索框,但是看着進度條的速度,我便果斷的點了取消)。基於這個情況,所以寫了腳本滿足自身查找文件的需求。

一、遍歷搜索文件或目錄的命令

先來了解一下win自帶的遍歷搜索命令,這兩個命令都可以進行模糊匹配。例如:sea*.bat

  • dir /S search.bat   遍歷當前目錄查找search.bat 文件
  • forfiles /S /M search.bat   遍歷當前目錄查找search.bat文件

以上兩個命令各有優勢,都是指定盤符查找,視情況使用。

二、全盤遍歷查找腳本

這里全盤遍歷便是根據上述命令進行循環查找

@echo off& setlocal enabledelayedexpansion
rem +++++++++++++++++++++++++++++++++++++++++++
rem   search.bat
rem          By zhzw @2018/7/4
rem
rem            Version: 1.0
rem +++++++++++++++++++++++++++++++++++++++++++
set stime=%time:~0,2%%time:~3,2%%time:~6,2%
if "%stime:~0,1%"==" " set "stime=0%stime:~1%"

if "%1" equ "" (
    echo 命令語法不正確。使用/?查看幫助
    goto exit
)
if "%1" equ "/?" (
    echo 全盤搜索文件/文件夾或者遍歷目錄。
	echo.
    echo SEARCH ^[file^]^[folder^]^[path^] ^[/V^]
	echo.
	echo   ^[file^]^[folder^]^[path^]
	echo 	指定要列出的文件、文件夾或目錄列表。
	echo.
	echo   ^[/V^]
	echo 	查找相關字符串
    goto exit
)
if /i "%1" equ "/v" (
	echo 模糊查找
    set pwd=%cd%
	echo  start searching .....
	echo.

	for %%i in (C:\ D:\ E:\ F:\ G:\ H:\ I:\ J:\ K:\) do (
		if exist %%i (
			echo ■■■■ Searching for the %%i disk
			rem if exist %%i\nul
			rem cd /d %%i\ & dir /S/b "%1" 2>nul
			cd /d %%i & dir /S/b |findstr "%2$" & echo.
		)
	)
	cd /d !pwd!
	echo. &echo. &echo.
) else (
	set pwd=%cd%
	echo  start searching .....
	echo.
        
        @rem fsutil fsinfo drives 獲得各驅動器盤符
	for %%i in (C:\ D:\ E:\ F:\ G:\ H:\ I:\ J:\ K:\) do (
		if exist %%i (
			echo ■■■■ Searching for the %%i disk
			rem if exist %%i\nul
			rem cd /d %%i\ & dir /S/b "%1" 2>nul
			cd /d %%i & dir /S/b "%1" & echo.
		)
	)
	cd /d !pwd!
	echo. &echo. &echo.
)

set etime=%time:~0,2%%time:~3,2%%time:~6,2%
if "%etime:~0,1%"==" " set "etime=0%etime:~1%"
echo 開始時間:%stime%
echo 結束時間:%etime%
:exit

三、配置環境變量命令行使用

我的電腦 -->右鍵 --> 屬性 --> 環境變量 --> 系統變量 --> Path --> 輸入search.bat 文件所在路徑

這樣就能在命令行快速的使用命令查找文件或目錄所在路徑了

最后附上效果圖:

四、擴展 forfiles 的使用

刪除3天前的所有文件
forfiles /P G:\Test\ /D -3  /C "cmd /c del @file"

刪除今天或今天之后的Test目錄下的所有數據
forfiles /D +%date:~0,10% /P G:\Test\ /C "cmd /c rd /S/Q G:\Test\"


刪除今天之后的文件和目錄
forfiles /D +%date:~0,10% /P G:\Test\ /C "cmd /c if @isdir==true (rd /S/Q @path) else (del @file)"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM