我对编程或编写脚本相当新,所以我希望我使用的术语是正确的。
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
)
我对上面的代码有两个问题
我可以假设这是因为循环遍历txt文件的每一行。
2.文件重命名过程出于某种原因出错。
输出文件如下所示:
“Log1000_1.1.1.2015-02-19%3A224044.textlog”
虽然应该如下所示:
Log1000_1.1.1.1_Base.1_2015-02-19%3A224044.textlog
是否有任何人有任何想法或建议如何修复代码或者altativliy建议不同的?
谢谢大家
答案 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
使用必需的.
绑定适当的部分,并且可以执行重命名。