Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поэтапное переименование файлов

Ответить
Настройки темы
CMD/BAT - [решено] Поэтапное переименование файлов

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:04, 26-01-2012

 

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Наверное, слишком много прошу. В принципе, у меня проблема лишь с получением имени самого старого файла в переменную. Дальше - справлюсь.

Отправлено: 16:27, 26-01-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2715
Благодарности: 1688

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off

Set Where=D:\Delete2
Set NewName=Current.dat
Set Maska=File_???.dat

FOR /F "usebackq delims=" %%f IN (`Dir "%Where%\%Maska%" /B /A:-D /O:D`) DO Ren "%Where%\%%f" "%NewName%" & GoTo :Continue
:Continue

Echo Делаем дальше что нужно, или не делаем ничего

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 26-01-2012 в 19:46. Причина: Нашел наиболее универсальное ИМХО решение, лишнее удалил. Идею выйти из For на метку подсмотрел в пришедшей почте в ответе Автор: Anonymоus

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:27, 26-01-2012 | #3


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо за решение!
Доделал его под себя. Посмотрите, пожалуйста, нет ли в нем опасности одновременного обращения к файлу данных Current.dat рабочей программы и самого скрипта. Программа пытается загрузить файл раз в минуту, в случае успеха, удаляет файл.

Код: Выделить весь код
@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
или на время проверки, на него накладываются какие либо ограничения, и проверку лучше исключить?

Отправлено: 15:08, 27-01-2012 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поэтапное переименование файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переименование файлов adm1nzoda Скриптовые языки администрирования Windows 3 28-12-2010 13:26
CMD/BAT - Автоматизация (поэтапное перемещения файлов) между двумя директориями alexey_vf Скриптовые языки администрирования Windows 2 22-12-2010 20:21
CMD/BAT - Переименование файлов. gen0m.rsw Скриптовые языки администрирования Windows 1 15-10-2010 19:15
переименование файлов mask Программирование и базы данных 6 20-05-2003 00:53
Переименование файлов Pavelz Microsoft Windows NT/2000/2003 7 24-01-2003 10:32




 
Переход