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

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

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

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


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

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


OS XP... CMD... Есть общая папка: d:\mail_out\ с подпапками: d:\mail_out\15\ d:\mail_out\29\ и т.п. d:\mail_out\55\
Во вложенные папки юзеры кидают файлы:
*.doc *.xls
!!! Имена файлов кириллица или транслит количество файлов не определено.
Надо сделать CMD для сортировки файлов по дате создания с последующим переименованием всех файлов во всех подпапках по шаблону:
ATЕ+Номер подпапки+Порядковый номер+Текущая дата.маска, где
ATЕ=21 административно-территориальная единица (SET my_Ate=21)
Номер подпапки=Имя папки где лежат файлы (структурный раздел организации)
Порядковый номер=от A до Z длина 1 символ, шаг 1 !!! для каждой подпапки свой счетчик
Текущая дата=дата вида DD (SET t_Date=%DATE:~0,2%)
Конечное имя файла вида 7.3
d:\mail_out\15\2115B09.xls самый новый
2115A09.xls самый старый
2115B09.doc самый новый
2115A09.doc самый старый
Заархивировать все файлы подпапки посредством RAR с удалением файлов
для 9 числа d:\mail_out\15\*.* в архив 2115A09.rar предварительно проверив папку d:\mail_rar\MM - текущий месяц
на наличие 2115A09.rar если есть то создать архив 2115B09.rar и т.п. (нужен счетчик для *.rar A для старого в числе Z для нового)
Если папка d:\mail_rar\MM (SET T_Month=%DATE:~3,2%) не существует то создать.
(IF NOT EXIST d:\mail_rar\%DATE:~3,2% MD d:\mail_rar\%DATE:~3,2%)
Прошу помощи со счётчиком (как минимум) и если можно ссылки на доходчивое описание FOR (не дошло).
Благодярю...

Отправлено: 23:14, 10-05-2010

 

Googler


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

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


Цитата kotik147:
CMD для сортировки файлов по дате создания с последующим переименованием всех файлов во всех подпапках по шаблону »
где-то так:
Код: Выделить весь код
@Echo Off

Set ROOT=d:\mail_out
Set ABC= ABCDEFGHIJKLMNOPQRSTUVWXYZ

For /R "%ROOT%" %%i In (.) Do If /I Not "%%~fi"=="%ROOT%" Call :EX "%%~fi" *.DOC& Call :EX "%%~fi" *.XLS
Exit /B 0

:EX
For /F "Tokens=1* Delims=[]" %%a In ('DIR /B/OD "%~1\%~2"^|Find /N /V ""') Do (
Call REN "%~1\%%b" "21%~n1%%ABC:~%%a,1%%%DATE:~0,2%.*" 2>Nul)
GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:03, 11-05-2010 | #2



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

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


Аватара для El Sanchez

Ветеран


Contributor


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

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


kotik147, а если юзеры накидают в подпапки более 26 файлов одного расширения? А то букв латинского алфавита может и не хватить.


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

Отправлено: 21:10, 11-05-2010 | #3


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


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

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


Цитата El Sanchez:
26 файлов одного расширения? »
Шаблон сверху спустили. Применение цифрового счётчика было бы куда логичней. Две маски 52 файла. На практике максимум 30.

Отправлено: 23:54, 11-05-2010 | #4


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


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

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


Цитата amel27:
где-то так: »
Огромное спасибо amel27 за оперативную помощь. Здоровья богатырского и счастья бесконечного!!!
Проверил, есть одно но… Если в имени файла использованы точки все, что после точки не обрабатывается, остается в хвосте файла.
До имя.файла.doc После 2115C11.файла.doc
Постараюсь разобраться. А если не выйдет разобраться надо будет юзеров отучить от использования точки.

Отправлено: 00:13, 12-05-2010 | #5


Googler


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

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


Цитата kotik147:
Если в имени файла использованы точки все, что после точки не обрабатывается, остается в хвосте файла. »
Код: Выделить весь код
@Echo Off

Set ROOT=d:\mail_out
Set ABC= ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890
For /R "%ROOT%" %%i In (.) Do Call :EX "%%~fi" *.DOC& Call :EX "%%~fi" *.XLS

:EX
If Not "%~1"=="" For /F "Tokens=1* Delims=[]" %%a In ('DIR /B/OD "%~1\%~2" 2^>Nul^
|Find /N /V ""') Do Call REN "%~1\%%b" "21%~n1%%ABC:~%%a,1%%%DATE:~0,2%%%~xb"
GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:24, 12-05-2010 | #6


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


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

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


Восхищаюсь Вашим талантом, amel27, и благодарю ещё раз. Не понимаю как, но все работает.

Отправлено: 00:03, 13-05-2010 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[тестируем] EasySaver: пакетное сохранение/восстановление настроек Su4nost_ Автоматическая установка приложений 7 07-02-2016 02:48
[решено] Пакетное переименование ярлыков SimSim Хочу все знать 9 24-10-2012 10:44
HP Deskjet D4363 сброс счётчика shponder Хочу все знать 0 22-01-2010 19:21
Доступ - Вход с использованием удаленного доступа. sh1va Microsoft Windows 2000/XP 2 23-09-2009 14:40
Фильтрация ГП с использованием групп. nghst Microsoft Windows NT/2000/2003 4 05-02-2008 06:12




 
Переход