1

Тема: CMD/BAT: Поэтапное переименование файлов

Помогите, плиз!
Есть папка, в которой появляются файлы вида File_XXX.DAT, где XXX - случайное, заранее не известное число.
Нужно переименовать самый старый файл File_XXX.DAT в Current.DAT
После удаления Current.DAT из папки другой программой, переименовать следующий самый старый файл и т.д.
Заранее благодарен!

2

Re: CMD/BAT: Поэтапное переименование файлов

echo off
set __path=%~dp0
for /f "delims=" %%i in ('dir /a:-d /t:c /o:d /b "%__path%"') do (ren "%%~dpnxi" "Current%%~xi" & goto :eof)
Я конечно далек от мысли... (с)

3

Re: CMD/BAT: Поэтапное переименование файлов

Очень мощное решение!
Но я побоялся использовать конструкции типа %~dp0, начитавшись страшилок с ошибками в адресации папок. Просто из-за отсутствия опыта использования. Поэтому взял такое же решение с другого форума, более понятное для меня:

@Echo Off
:: Скрипт подготовки файлов для импорта. 
:: Файлы поступают в папку по электронной почте.
:: Рабочая программа настроена на загрузку данных с файла Current.dat, с последующем его удалением.
:: Обязательно использовать маску, отличную от файла подготовленного к загрузке. Иначе файл будет переименовываться циклично.
Set Where=C:\Exchange\in
Set NewName=Current.dat
Set Maska=d*.dat
:: Ждем появления нового файла данных и удаления подготовленного файла
:Test
IF exist "%Where%\%Maska%" IF not exist "%Where%\%NewName%" GOTO :Beg
GOTO :Test
:: Переименовываем самый старый файл
:Beg
FOR /F "usebackq delims=" %%f IN (`Dir "%Where%\%Maska%" /B /A:-D /O:D`) DO Ren "%Where%\%%f" "%NewName%" & GOTO :Continue
:Continue
sleep 10
GOTO :Test

В связи с чем, появился вопрос. В добавленной мною проверке IF not exist Current.dat в строке:

IF exist "%Where%\%Maska%" IF not exist "%Where%\%NewName%" GOTO :Beg

накладываются какие либо ограничения на файл Current.dat в момент проверки?