将文件重命名为祖父文件夹名称

将文件重命名为祖父文件夹名称

所以我有一堆具有类似以下目录的文件夹:

.\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 所在的位置相同),文件夹名称为 page?

提前致谢!(我大概有 10 年没有碰过 .bat 了,所以如果可能的话请解释一下你做了什么,这样我就可以从中学习)

答案1

我不确定我是否正确理解了这部分“如果可能的话,是否有办法将所有重命名的 .png 文件移动到 .\page\ 中新建的文件夹中(与 .bat 所在的位置相同),文件夹名称为 page?”

会是这样的吗?

在此处输入图片描述

@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

相关内容