背景:當想要查找一個文件時,記得放在某個盤里。手動去遍歷時感覺好心累,找了半天還是沒有找着(雖然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)"