我编写了一个批处理文件,它重命名当前文件夹及其所有子文件夹中的所有 PDF 文件。
有问题...
当我使用
For /R %%I
时,我找不到文件的路径、名称和文件夹名称。
当我不使用上述内容时,它只能在当前文件夹中查找,但脚本可以工作。
我只知道
For %%i
命令能够使用set foldername=%%i
,这可能不是我应该这样做的。我现在需要多个do set*
才能写入每条信息。
结果我希望它来自路径中的pdf:C:\Users\Downloads\AREA 1\xyyz.pdf,当脚本位于地图中时自动重命名为C:\Users\Downloads\AREA 1\AREA 1_xyyz.pdf C:\用户\下载
最好是之后将文件移过来。
然而,在使用
For /R
时,我似乎无法命令文件本身。
使用
For /R
命令时,我似乎无法访问正确的文件名、映射名和文件路径以更改其名称。
echo on
setlocal enabledelayedexpansion
set "folderpath=%~dp0"
cd %folderpath%
for /r %%I in ("*.pdf") do ( for %%i in (.) do ( (set fname=%%i) & for %%I in (.) do ( (set fldnm=%%~nxI) & call :rename ) ) )
@pause
goto :eof
:rename
echo "%fldnm%_%fname%"
ren "%fname%" "%fldnm%_%fname%"
@pause
goto :eof
endlocal
pause
我不明白你的 code 的作用...但是,此解决方案执行你的 description 指定的操作:
echo on
setlocal enabledelayedexpansion
set "folderpath=%~dp0"
cd %folderpath%
for /R %%I in ("*.pdf") do (
set "fldnm=%%~pI"
for %%i in ("!fldnm:~0,-1!") do (
ren "%%~fI" "%%~ni_%%~nI%%~xI"
)
)
@pause
goto :eof