
求助批處理進行圖片整理歸類的問題問題是這樣,現在一個文件夾內有較大量圖片(大概一個文件夾內有100-250張,圖片格式為.jpg格式)圖片名稱例:0313-RS ·0010-0001-1-1-001.jpg0313-RS ·0010-0001-1-2-001.jpg0313-RS ·0010-0001-1-2-002.jpg0313-RS ·0010-0001-3-1-001.jpg0313-RS ·0010-0001-3-1-002.jpg0313-RS ·0010-0001-3-2-001.jpg0313-RS ·0010-0001-3-2-002.jpg0313-RS ·0010-0001-9-1-1-001.jpg0313-RS ·0010-0001-9-1-2-001.jpg0313-RS ·0010-0001-9-1-3-001.jpg0313-RS ·0010-0001-10-1-001.jpg0313-RS ·0010-0001-10-2-001.jpg現在需要在圖片所在文件夾內創建新文件夾,并以圖片名稱的除過后四位的其他名稱部分命名,如:0313-RS ·0010-0001-1-1-001.jpg 移動到0313-RS ·0010-0001-1-1 文件夾內0313-RS ·0010-0001-1-2-001.jpg 移動到0313-RS ·0010-0001-1-2 文件夾內0313-RS ·0010-0001-1-2-002.jpg 移動到0313-RS ·0010-0001-1-2 文件夾內(和上一個為同一個文件夾)0313-RS ·0010-0001-3-1-001.jpg 移動到0313-RS ·0010-0001-3-1 文件夾內0313-RS ·0010-0001-3-1-002.jpg 移動到0313-RS ·0010-0001-3-1 文件夾內(和上一個為同一個文件夾)0313-RS ·0010-0001-3-2-001.jpg 移動到0313-RS ·0010-0001-3-2 文件夾內0313-RS ·0010-0001-3-2-002.jpg 移動到0313-RS ·0010-0001-3-2 文件夾內(和上一個為同一個文件夾)0313-RS ·0010-0001-9-1-1-001.jpg移動到0313-RS ·0010-0001-9-1-1 文件夾內0313-RS ·0010-0001-9-1-2-001.jpg移動到0313-RS ·0010-0001-9-1-2 文件夾內0313-RS ·0010-0001-9-1-3-001.jpg移動到0313-RS ·0010-0001-9-1-3 文件夾內0313-RS ·0010-0001-10-1-001.jpg 移動到0313-RS ·0010-0001-10-1 文件夾內0313-RS ·0010-0001-10-2-001.jpg 移動到0313-RS ·0010-0001-10-2 文件夾內(和上一個為同一個文件夾)例子舉的比較多,但規律比較簡單,我在這里自學了兩天(發現了寶藏論壇^_^),思路是這樣:先新建文件夾以每張照片名命名(有多少照片就建立多少文件夾),然后把每張照片分別移動到各相應的文件夾內:
再把需要放到一個文件夾的照片連同文件夾移動到同一個文件夾內:nclick="copycode($('code0'));">復制代碼
- @echo off&setlocal enabledelayedexpansion
- for /r %%i in (*)do if not exist %%~ni if not %%i==%0 md %%~ni&move %%i %%~ni
再把調整文件夾內的照片,刪掉多余的文件夾(網上抄大佬的,看不懂,不過能用,哈哈):nclick="copycode($('code1'));">復制代碼
- @echo off&setlocal EnableDelayedExpansion
- for/d %%i in (*) do (set a=%%i
- set b=!a:~0,-4!
- move %%i !b!
- )
到這這個文件夾內處理完了,手動再修改這個總文件夾名稱為:0313-RS ·0010-0001這就處理完了一個。麻煩的是第一個代碼和第二個代碼是放進這個文件夾運行的,大佬給的這個是放到文件夾上一級運行的,雖然比純手改要方便很多,但我還是想問下能不能用一個批處理指令一次完成這么多任務,最好是能一次運行完成多個,可以的話再使用批處理修改下總文件夾的名稱。還有個問題就是發現這三個代碼或許有bug,同樣需處理的文件,有的運行沒反應,有的卻可以,不知道是什么原因。麻煩大家幫忙看看,謝謝大家。能力水平有限,想到的這個思路可能不是最完美的,或許有更好的解決辦法,能提供的話在此不勝感激。nclick="copycode($('code2'));">復制代碼
- <# :
- @echo off
- rem 增強代碼兼容性,代碼保存為 .bat、.cmd、.ps1均可執行
- powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- more +8 %~f0 > %~dpn0.ps1
- powershell %~dpn0.ps1
- del %~dpn0.ps1&pause&exit /b
- #>
- foreach ($dir in @(dir .***))
- {
- $count = 0
- foreach ($file in @(dir $dir))
- {
- if ($file.Extension -eq .jpg){
- if (! $file.PSIsContainer){
- if ($dir.Parent){
- $count += 0
- $new_file = -Join($dir.name,$file.Extension)
- $dest = -Join(.,$dir.Parent.Parent,,$dir.Parent,,$new_file)
- $file.Moveto($dest)
- write-host 正在移動:$file
- if( (Get-ChildItem $dir | Measure-Object).Count -eq 0) {
- rd $dir
- write-host 刪除目錄:$dir
- }
- }
- }
- }
- }
- }

