如何找到“for /R”的路径、文件名和文件夹名?

问题描述 投票:0回答:1

我编写了一个批处理文件,它重命名当前文件夹及其所有子文件夹中的所有 PDF 文件。

有问题...

  1. 当我使用

    For /R %%I
    时,我找不到文件的路径、名称和文件夹名称。

  2. 当我不使用上述内容时,它只能在当前文件夹中查找,但脚本可以工作。

  3. 我只知道

    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
batch-file batch-rename
1个回答
0
投票

我不明白你的 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
© www.soinside.com 2019 - 2024. All rights reserved.