使用多个“。”重命名多个文件。在他们里面

时间:2015-03-19 06:08:12

标签: batch-file batch-rename

我对编程或编写脚本相当新,所以我希望我使用的术语是正确的。

1.我正在尝试使用多个文件夹重命名多个文件。

2.我不知道文件夹的名称,我只能知道托管这些子文件夹的文件夹,每个文件夹都分配有不同的时间和日期标记

3.我不知道每个文件夹包含的文件的名称

4.在每个文件夹中,文件名与其他文件夹

完全相同

5. 我知道所有文件夹中的文件扩展名 - “ .t

所以我想做的是以下几点:

原始文件:

文件夹名称: FolderA

“Log1000_1.1.1.1_Base.1.textlog.t”

“Log1000_1.1.1.1_Base.2.textlog.t”

文件夹名称: FolderB

“Log1000_1.1.1.1_Base.1.textlog.t”

“Log1000_1.1.1.1_Base.2.textlog.t”

通缉结果:

文件夹名称: 2015-02-19%3A224044

“Log1000_1.1.1.1_Base。的 1.2015-02-19%3A224044.textlog

“Log1000_1.1.1.1_Base。的 2.2015-02-19%3A224044.textlog

文件夹名称: 1.2015-02-19%3A224060

“Log1000_1.1.1.1_Base。的 1.2015-02-19%3A224060.textlog

“Log1000_1.1.1.1_Base。的 2.1.2015-02-19%3A224060.textlog

等等......

我尝试过以下代码:

cd C:\DataCollection\ClassOne

REM Creating a list of all folders

dir /b /a:d >>C:\DataCollection\ClassOne\tempfolderlist.txt

for /R /F "tokens=*" %%A in (C:\DataCollection\ClassOne\tempfolderlist.txt) do (
        cd C:\C:\DataCollection\ClassOne\%%A
        ren *.t *%%A.textlog
)

我对上面的代码有两个问题

  1. 循环只会进入一个文件夹,更改1个文件扩展名(只有1个文件)并保留其他文件UN-touching / UN-Changed。
  2. 我可以假设这是因为循环遍历txt文件的每一行。

    2.文件重命名过程出于某种原因出错。

    输出文件如下所示:

    “Log1000_1.1.1.2015-02-19%3A224044.textlog”

    虽然应该如下所示:

    Log1000_1.1.1.1_Base.1_2015-02-19%3A224044.textlog

    是否有任何人有任何想法或建议如何修复代码或者altativliy建议不同的?

    谢谢大家

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN ('dir /s /b /a-d "%sourcedir%\*.t" ') DO (
 FOR /f "delims=" %%d IN ("%%~dpa.") DO (
  FOR /f "delims=" %%p IN ("%%~na.") DO (
   ECHO(REN "%%a" "%%~np.%%~nxd%%~xp"
  )
 )
)

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

为了测试目的,所需的REN命令仅为ECHO在您确认命令正确后,将ECHO(REN更改为REN以实际重命名文件。

此操作的方式是执行所选目录中*.t个文件的目录列表,并将每个名称应用于%%a

%%d收到驱动器+目录+。所以%%d%%~nd)的名称部分是文件的父目录的名称。

%%p同样只接收文件的名称部分,因此%%p的名称部分是.textlog之前的部分,而扩展部分是.textlog

使用必需的.绑定适当的部分,并且可以执行重命名。