|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Пакетное переименование файлов на основе заданного списка |
|
CMD/BAT - Пакетное переименование файлов на основе заданного списка
|
Stalker_AleX333
Сообщения: n/a |
Народ, имеется набор различных файлов в папке (с подпапками). Нужно на основе примерно такого списка, вида:
Папка 1 | Папка 2 старое имя: новое имя: fbr\fbr_linoleum = floor\floor_floor1 crete\crete_bordur = crete\crete_border2 crete\crete_stolb_a = crete\crete_stolb crete\crete_dirty_gr = crete\crete_floor3 и т.п. Вот как и в каком виде этот список прикурутить (желательно из внешнего файла) к cmd-шнику? |
|
Отправлено: 19:23, 28-07-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать
|
Отправлено: 19:33, 28-07-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Stalker_AleX333
Сообщения: n/a |
1. Список соответствий файлов по именам уже подготовлен в виде txt файла.
2. Не окажется. В первой папке таких имен быть не может. Вторая папка пуста, в нее же будут перемещаться файлы согласно списку и структуре. Хотя, простенькую защиту можно состряпать. Совпадает имя - не переименовываем, ошибку пишем в консоль и идем дальше. |
Отправлено: 18:57, 31-07-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Stalker_AleX333:
Цитата Iska:
|
||
Отправлено: 22:41, 31-07-2017 | #4 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Если файл того вида, что как я понимаю
то вот вариант
@Echo Off cls Set "BoxIn=Z:\Box_In" Set "BoxOut=Z:\Box_Out" Set "Spisok=Z:\Box_In\список переименования.txt" FOR /F "usebackq tokens=1,2 delims==" %%i IN ("%Spisok%") DO If Not "%%j"=="" Call :ReMove "%%i" "%%j" pause GoTo :Eof :ReMove Call :Space "File1" %1 Call :Space "File2" %2 Set Action=Move "%BoxIn%\%File1%" "%BoxOut%\%File2%" Call :MakeDir "%BoxOut%\%File2%" If Not Exist "%BoxOut%\%File2%" ( %Action% >nul || (Echo %Action% &Echo:) ) Else ( Echo %Action% & Echo File Exist "%BoxOut%\%File2%" &Echo: ) GoTo :Eof :Space Set "TMPbegin=%~2" :Begin Set "TMPname=%TMPbegin%" If "%TMPbegin:~0,1%"==" " Set "TMPbegin=%TMPbegin:~1,999%" If "%TMPbegin:~-1%"==" " Set "TMPbegin=%TMPbegin:~0,-1%" If Not "%TMPbegin%"=="%TMPname%" GoTo :Begin Set "%~1=%TMPname%" GoTo :Eof :MakeDir If Not Exist "%~dp1" Md "%~dp1" GoTo :Eof Если файл того вида, что в вопросе, например
то вот вариант
@Echo Off cls Set "Spisok=Z:\Box_In\список переименования.txt" FOR /F "usebackq tokens=1,2 delims=|" %%i IN ("%Spisok%") DO If Not "%%j"=="" ( Call :Space "BoxIn" "%%i" Call :Space "BoxOut" "%%j" GoTo :Continue ) Echo OutBox not defined Pause GoTo :Eof :Continue FOR /F "usebackq tokens=1,2 delims==" %%i IN ("%Spisok%") DO If Not "%%j"=="" Call :ReMove "%%i" "%%j" pause GoTo :Eof :ReMove Call :Space "File1" %1 Call :Space "File2" %2 Set Action=Move "%BoxIn%\%File1%" "%BoxOut%\%File2%" Call :MakeDir "%BoxOut%\%File2%" If Not Exist "%BoxOut%\%File2%" ( %Action% >nul || (Echo %Action% &Echo:) ) Else ( Echo %Action% & Echo File Exist "%BoxOut%\%File2%" &Echo: ) GoTo :Eof :Space Set "TMPbegin=%~2" :Begin Set "TMPname=%TMPbegin%" If "%TMPbegin:~0,1%"==" " Set "TMPbegin=%TMPbegin:~1,999%" If "%TMPbegin:~-1%"==" " Set "TMPbegin=%TMPbegin:~0,-1%" If Not "%TMPbegin%"=="%TMPname%" GoTo :Begin If "%TMPname:~-1%"=="\" Set "TMPname=%TMPname:~0,-1%" Set "%~1=%TMPname%" GoTo :Eof :MakeDir If Not Exist "%~dp1" Md "%~dp1" GoTo :Eof |
||
------- Последний раз редактировалось megaloman, 02-08-2017 в 13:55. Причина: Добавил вариант решения Отправлено: 15:09, 01-08-2017 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Stalker_AleX333,
если делать правильно, то содержимое "file.txt" должно выглядеть так: и при структуре входа такой: будет работать как надо такой код: |
Отправлено: 17:28, 01-08-2017 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Пакетное переименование файлов в случайное имя | brosafari | Скриптовые языки администрирования Windows | 3 | 17-01-2017 21:29 | |
CMD/BAT - Пакетное переименование файлов по маске | Viktor99 | Скриптовые языки администрирования Windows | 1 | 15-08-2016 23:25 | |
CMD/BAT - [решено] Пакетное переименование файлов | ArsenBespalov | Скриптовые языки администрирования Windows | 9 | 11-08-2016 03:56 | |
VBS/WSH/JS - Создание группы файлов Excel на основе списка | Serg2010 | Скриптовые языки администрирования Windows | 4 | 23-03-2013 00:43 | |
Создание группы файлов Excel на основе списка | Serg2010 | AutoIt | 1 | 19-03-2013 05:43 |
|