Я пишу сценарий для переименования файлов на основе даты.
Файлы генерируются каждый день с сервера, выводящего их так:
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.
Пожалуйста, ваша помощь будет высоко ценится