将子目录中的pdf文件重命名为子目录的名称

时间:2013-08-10 18:29:01

标签: batch-file rename subdirectory

我正在使用win 7平台。需要你的帮助来创建一个简化我的工作的bat文件。我的文件夹和文件以这种结构排列。

File1中

  • folder1中 - > abcd.pdf
  • 文件夹2 - > shhd.pdf .............................. folderN - > gfdfgd.pdf

文件2

  • folder1中 - > gbg.pdf
  • 文件夹2 - > kjc67z.pdf .............................. folderN - > iuxz4i.pdf

-

-

-

FileN

  • folder1中 - > ah455.pdf
  • 文件夹2 - > jfhd45.pdf .............................. folderN - > juvxzr.pdf

我想生成一个批处理文件,该文件将pdf文件重命名为它包含的文件夹的名称。例如,在上面的结构中,“abcd.pdf”被重命名为folder1.pdf。所有pdf文件都是这样做的。

还在每个目录(file1,file2..etc)中创建一个名为“test”的文件夹,其中包含其各自目录的所有重命名的pdf文件。

如果我将 File1 中的所有文件夹复制到Myfolder&运行bat文件,将创建一个名为test的文件夹,所有pdf文件将被重命名并复制到test文件夹。

但我想要的是,我想在H:\驱动器中运行bat文件。让我们假设H:\驱动包含所有目录File1,File2 .... FileN,每个目录包含一个子目录,如我在上面的结构中所示。如果我在H:\驱动器中运行bat文件,则必须在每个目录中创建一个名为 test 的文件夹,其中包含其各自子目录的重命名的pdf文件。

1 个答案:

答案 0 :(得分:2)

@ECHO OFF &SETLOCAL
for /F "delims=" %%a in ('dir /b /s /a-d *.pdf') do (
     set "fname=%%~fa"
     for %%b in ("%%~dpa.") do set "nname=%%~nxb"
     setlocal enabledelayedexpansion
     ECHO ren "!fname!" "!nname!.pdf"
     endlocal
)

注意:您只能重命名一个pdf /文件夹。


OP的其他一些代码:

@ECHO OFF &SETLOCAL
MKDIR "H:\Myfolder\test"
for /f "delims=" %%i in ('DIR /b /a-d "H:\Myfolder"') do (
    ECHO %%i
    CD "H:\Myfolder\%%~i"
    ren *.pdf "%%~nxi.pdf"
    copy *.pdf "H:\Myfolder\test"
    cd H:\Myfolder
)
cd H:\Myfolder\test
del H:\Myfolder\test\test.pdf