1

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

文件 1

  • 文件夹1->abcd.pdf
  • 文件夹 2 -> shhd.pdf ......................文件夹 N ->gfdfgd.pdf

文件2

  • 文件夹1->gbg.pdf
  • 文件夹 2 ->kjc67z.pdf .....................文件夹 N ->iuxz4i.pdf

--

--

--

文件N

  • 文件夹1->ah455.pdf
  • 文件夹 2 ->jfhd45.pdf ......................文件夹 N ->juvxzr.pdf

我想生成一个批处理文件,它将 pdf 文件重命名为它包含的文件夹的名称。例如,在上述结构中,“abcd.pdf”被重命名为 folder1.pdf。这分别适用于所有 pdf 文件。

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

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

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

4

1 回答 1

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 
于 2013-08-10T20:21:36.000 回答