所以我有一堆檔案夾,其目錄與以下類似:
.\page\1\randomStringofCharacters\randomStringofCharactersAgain.png
.\page\2\randomStringofCharacters\randomStringofCharactersAgain.png
.\page\3\randomStringofCharacters\randomStringofCharactersAgain.png
我想將所有.png檔案重命名為第一個randomStringofCharacters. 所以基本上
.\page\1\randomStringofCharacters\randomStringofCharactersAgain.png -> 1.png
.\page\2\randomStringofCharacters\randomStringofCharactersAgain.png -> 2.png
.\page\3\randomStringofCharacters\randomStringofCharactersAgain.png -> 3.png
有沒有可以做到這一點的批處理腳本?我努力了:
@Echo OFF
FOR /D /R %%# in (*) DO (
PUSHD "%%#"
FOR %%@ in ("*.png") DO (
Echo Ren: ".\%%~n#\%%@" "%%~n#%%~x@"
Ren "%%@" "%%~n#%%~x@"
)
POPD
)
Pause&Exit
然而,這只用父目錄重命名檔案。
如果可能的話,有沒有辦法將所有這些重命名的 .png 檔案移動到新創建的檔案夾中.\page\(與 .bat 所在的位置相同),檔案夾名稱為頁面?
提前致謝!
uj5u.com熱心網友回復:
可能是這樣的(您必須將主檔案夾拖放到批處理中):
@echo off
if exist "%~1" (IF not exist "%~1\" exit) else (exit)
if /i not exist "%~dp0Page" md "%~dp0Page"
pushd "%~1"
for /f "delims=" %%a in ('dir /s /b *.png') do Call :Rename "%%~a" "%%~dpa"
exit
:Rename
set Cpath=%~2
set Cpath=%Cpath:~0,-1%
For %%a in ("%Cpath%") do set Cpath=%%~dpa
set Cpath=%Cpath:~0,-1%
for %%a in ("%Cpath%") do set NName=%%~nxa
move "%~1" "%~dp0Page\%NName%%~x1"
goto :EOF

uj5u.com熱心網友回復:
您不應該使用for /R來處理預定義目錄層次結構深度中的專案:
@echo off
rem // Iterate through the numeric target sub-directories (`1`, `2`, `3`, etc.):
for /D %%K in (".\page\*") do (
rem // Iterate through sub-sub-directories `randomStringofCharacters`:
for /D %%J in ("%%~K\*") do (
rem // Iterate through `.png` files:
for %%I in ("%%~J\*.png") do (
rem // Actually rename the current file:
ren "%%~I" "%%~nxK%%~xI"
)
)
)
請注意,這種方法不會檢查.png每個位置是否只有一個檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409882.html
標籤:
下一篇:使用批處理重命名檔案夾
