
[已解決]批處理如何分類文件我新手,不入流動,最近想給電腦中的文件分類。于是寫了一下代碼(就是滿處抄的)目前可以用,但是功能有個缺陷 它只能按擴展名分類。所以在此我想求助大神們1.可以不可以讓他對 其他文件分類。就是指定擴展名以外的文件2.可不可以在 上一個功能的基礎上,再讓其按照一定規律 或者說是 關鍵詞分類!例如: 某目錄下, 電視劇 封神榜,01 02 03 04....濟公傳 01 02 03 04....均為.RMVB文件,可不可以在其 按照擴展名分類的基礎上 再檢索關鍵字為 封神榜 自動對 封神榜 減速關鍵字為 濟公傳 對濟公傳 進行歸類效果如下自己滿處抄來的代碼 現在只能按擴展名分類。如代碼有什么不妥之處,也請大神們指出。我虛心接受!PS 自己用,并非商業目的。感覺強大的批處理代碼可以完成!這樣表示應該清楚我想做什么了吧。就是文件太多。一個一個分太費勁!
其實我用的代碼就這一點兒,但是匹配關鍵字我不會了,也沒找到。感謝15樓 15# apang 的大神讀懂了我的要求,解決了我的問題!當然也很感謝其他幾位大神。也許你們把我的問題想復雜了?,F將我改動過的代碼發出來以表敬意(由于需要改動)成品代碼nclick="copycode($('code0'));">復制代碼
- 執行前-----某目錄*****.*N多個
- 執行后-----某目錄完成擴展名關鍵字*關鍵字*.*
- 執行后-----某目錄完成擴展名*.*(無關鍵字的)
- 執行后-----某目錄完成其他關鍵字*關鍵字*.*
- 執行后-----某目錄完成其他*.*(無關鍵字的
再次感謝大姐的幫助。nclick="copycode($('code1'));">復制代碼
- @echo off&color 0a&title %~n0【高級版】by: 批處理之家大神【apang】^|當前時間:%time:~0,5%
- ::定義關鍵字和擴展名
- echo+
- echo+ 本程序由【批處理之家】大神【apang】制作。
- echo+
- set /p keyWord=<D:備份關鍵字.ini
- set DstDir=完成
- for %%a in (jpg bmp gif jpe png jpeg) do set .%%a=圖片
- for %%a in (txt doc dot docx pdf ppt pot pps) do set .%%a=其他文本
- for %%a in (wmv rmv rmvb rm mp4 mkv avi wm wmp) do set .%%a=電影
- for %%a in (flv 3gp ram mov mpg mpeg swf) do set .%%a=電影手機格式
- set .torrent=其他種子
- for %%a in (rar zip 7z) do set .%%a=程序壓縮包
- for %%a in (mp3 aac wav) do set .%%a=音樂
- for %%a in (ini gl) do set .%%a=配置
- set /p a=請選擇是否整理可執行文件(整理請輸入Y):
- if /i %a%==Y for %%a in (exebat) do set .%%a=程序
- if /i %a%==y for %%a in (exebat) do set .%%a=程序
- :Lp
- if exist %DstDir% (set /p DstDir=目標目錄已存在,請重新指定: & goto :Lp )
- ::執行分類
- for /f delims= %%a in ('dir /a-d /b /s') do (
- if /i %%a NEQ %~f0 (
- setlocal enabledelayedexpansion
- set fPath=%%a
- set fName=%%~na
- if defined %%~xa (
- for %%b in ( %keyWord% ) do (
- if !fName:%%~nb=! NEQ !fName! (
- md %DstDir%!%%~xa!%%~nb
- move !fPath! %DstDir%!%%~xa!%%~nb
- ) )
- md %DstDir%!%%~xa!
- move !fPath! %DstDir%!%%~xa!
- ) else (
- md %DstDir%其他
- move !fPath! %DstDir%其他
- )
- endlocal
- ) ) 2>nul
- ::刪除空目錄
- cls&echo+&echo+分類完成,稍后自動退出
- for /f tokens=* %%i in ('dir/s/b/ad^|sort /r') do rd %%i >nul 2>nul
- ping -n 2 127.1 >nul

