window bat 批處理實例小結
2019-11-06 06:29:21
供稿:網友
::知識點小結::兩個冒號::表示注釋::學會使用幫助,任何命令 加 /?,列出幫助信息::@echo off取消回顯::set賦值::%date%=如:2017/03/06 %time%=如:15:02:57.48::%date:~0,4%%date:~5,2%%date:~8,2%=得到時間,如20170306::cd /d 可以跨盤符切換目錄::%cd%表示cd的當前路徑::echo輸出顯示::rd /S /Q D:/temp,非空也刪除文件夾::rd D:/temp,rd刪除文件夾,如果文件夾為空,則刪除,否則不刪除::>>重定向(輸出日志),2>>發生錯誤后重定向。如rd D:/temp 2>>D:/err.txt,如果刪除D:/temp失敗,則輸出錯誤信息到D:/err.txt,注意,存放錯誤信息的文本路徑最好寫全。::goto命令,是跳轉命令,goto year_flag執行到goto處,無條件跳轉到:year_flag處,如果不存在year_flag報錯::dir查看目錄::for /f %%a in ('dir /b /ad /s 目錄/^|sort /r') do (),循環目錄下所有文件夾及子目錄::for /d 遍歷目錄::for命令(for in do),變量用%%a表示,/f表示,讀取in()里面的內容,此處必須用單引號引起來。::|管道符,將dir /b /ad /s 目錄/^獲取的內容賦值給sort /r倒序輸出。::具體dir和for命令,請查詢幫助::::@echo off::核心思想:1.先刪除空的文件夾。2.進入最小的年文件夾,再進入最小的月文件夾,最后刪除最小的日文件夾::聲明,并設置年月日初值set year=2016set month=01set day=01set temp_file=D:/works/CTY/%date:~0,4%%date:~5,2%%date:~8,2%.txtset base_path=D:/works/CTY/cd /d %base_path%echo %date% %time% >>%temp_file%echo 遍歷當前路徑%cd%下所有的文件夾 >>%temp_file%for /f %%a in ('dir /b /ad /s %base_path%/^|sort /r') do ( echo 文件夾%%a >>%temp_file% rd "%%a" 2>>%temp_file%)echo 遍歷結束,刪除空文件夾>>%temp_file%::年文件夾跳轉for /d %%s in (*) do (if exist %%s ( echo 文件夾%%s存在 >>%temp_file% set year=%%s goto year_flag) else ( echo %%s年文件夾不存在 >>%temp_file%)):year_flagecho 參數year=%year% >>%temp_file%cd %year% 2>>%temp_file%echo 跳轉后的路徑%cd% >>%temp_file%::月文件夾跳轉for /d %%s in (*) do (if exist %%s ( echo 文件夾%%s存在 >>%temp_file% set month=%%s goto month_flag) else ( echo %%s月文件夾不存在 >>%temp_file%)):month_flagecho 參數month=%month% >>%temp_file%cd %month% 2>>%temp_file%echo 跳轉后的路徑%cd% >>%temp_file%::日文件夾跳轉for /d %%s in (*) do (if exist %%s ( echo 文件夾%%s存在 >>%temp_file% set day=%%s goto day_flag) else ( echo %%s日文件夾不存在 >>%temp_file%)):day_flagecho 參數day=%day% >>%temp_file%echo 刪除文件夾%cd%/%day% >>%temp_file%rd /S /Q %cd%/%day% 2>>%temp_file%echo 刪除完畢!>>%temp_file%::暫停pause::刪除命令rd /S /Q D:/works/CTY/2016/11/24