需要帮助完成批处理脚本来重命名文件

需要帮助完成批处理脚本来重命名文件

我正在编写一个脚本来根据日期重命名文件。

服务器每天都会生成文件并输出如下内容:

fil150807102600000001.txt
fil150807102600000002.txt
fil150807102600000003.txt

我的脚本的目标是自动将它们重命名为:

FILE-SRV1.DAAMMJJ_00000001
FILE-SRV1.DAAMMJJ_00000002
FILE-SRV1.DAAMMJJ_00000003

我为实现这一目标所采取的手动步骤是:

 1- format date to AAMMJJ (i am on a french computer, windows 7)
      set date=%date:~8,2%%date:~3,2%%date:~0,2%
         echo %date%
         150807
 2- Now rename my file as expected
      set fname=fil150807102600000001.txt
      ren "%fname%" "FILE-SRV1.D%date%_%fname:~13,8%"   [strip off the first 
      13 char and leave the 8 last]

我的文件已正确重命名。

现在我想编写以下脚本:

loop into the directory, 
find all file names starting by fil*
and rename them as needed

这是我的脚本,假设该脚本从我的原始文件所在的文件夹运行:

set date=%date:~8,2%%date:~3,2%%date:~0,2%
for /f %%f in ('dir fil* /b') do ren %%f "FILE-SRV1.D%%date%%_%%f:~13,8%"

结果是:

测试文件存在

C:\test\bat>dir fil* /b
fil150807102600000001.txt
fil150807102600000002.txt
fil150807102600000003.txt

运行脚本

C:\test\bat>script2.bat
C:\test\bat>set date=150807
C:\test\bat>for /F %f in ('dir fil* /b') do ren %f "FILE-SRV1.D%date%_%f:~13,8"
C:\test\bat>ren fil150807102600000001.txt "FILE-RV1.D%date%_fil150807102600000001.txt:~13,8"
Le nom de fichier existe déjà, ou le fichier est introuvable.

C:\test\bat>ren fil150807102600000002.txt "FILE-    SRV1.D%date%_fil150807102600000002.txt:~13,8"
Le nom de fichier existe déjà, ou le fichier
est introuvable.

C:\test\bat>ren fil150807102600000003.txt "FILE-SRV1.D%date%_fil150807102600000003.txt:~13,8"
Le nom de fichier existe déjà, ou le fichier
est introuvable.

非常感谢您的帮助

答案1

您使用的符号太多%,分配给变量不是一个好主意DATE,并且您不能FOR直接对变量执行字符串操作(它们就像并且您需要在末尾%%f带有 a 的东西):%

setlocal enabledelayedexpansion
set dat=%date:~8,2%%date:~3,2%%date:~0,2% 
for %%f in (fil*) do (
    SET "FILE=%%f"
    ren "%%f" "FILE-SRV1.D%dat%_!FILE:~13,8!"
)

setlocal enabledelayedexpansion需要使用符号!,以便FILE变量在每次循环迭代中得到更新。)

相关内容