|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование и копирование файлов |
|
CMD/BAT - [решено] Переименование и копирование файлов
|
Пользователь Сообщения: 60 |
Профиль | Отправить PM | Цитировать Добрый день! Хочу создать батник, который бы переименовывал файлы в папке и копировал их в итоговую "Total"
Есть две папки, "1" и "2" и в обеих лежат файлы c именами: check1,check2,check3.... и т.д Нужно чтобы нумерация начиналась с 001 и к имени добавлялся номер папки. например check001_1, check002_1, check003_1 - это для папки "1" и например check001_2, check002_2, check003_2 - для папки "2" файлов может быть более тысячи Для меня это нереально( Пробовал только переименовывать вот таким кодом for /f "tokens=*" %%a in ('dir /b C:\Onkassa\Rename\1\*.*') do ren C:\Onkassa\Rename\1\%%a 001_1%%a в итоге переименован только первый файл 001_1check |
|
Отправлено: 11:24, 17-08-2018 |
Ветеран Сообщения: 2710
|
Профиль | Отправить PM | Цитировать Iska,
Цитата Iska:
Вот попытка работать без определённого префикса. Но, опять же, приходится телепатить правило образования имени: КусокимениНомерРасширение. (скрипт 2)
@Echo Off cls Set "BoxIn=Z:\Box_In" Set "Folds="1111" "2222"" Set "Mask=*.*" Set /A Max=1000 Set "BoxOut=Z:\Box_In\Total" If Not Exist "%BoxOut%" Md "%BoxOut%" Pushd "%BoxIn%" &&( FOR %%d IN (%Folds%) DO ( FOR %%f IN ("%%~dpnxd\%Mask%") DO ( Call :RenCopy "%%~d" "%%f" "%%~nf" "%%~xf" "%BoxOut%" ) ) Popd ) Pause GoTo :Eof :RenCopy Set /A i=0 Set "NewName=%~3" :Begin Set /A i-=1 Call Set "j=%%NewName:~%i%,1%%" 2>nul Set /A j=1%j% || Set /A j=0 If 10 LEQ %j% If %j% LEQ 19 GoTo :Begin Set /A i+=1 If %i% EQU 0 GoTo :Eof Call Set "j=%%NewName:~%i%%%" If /I "%j%"==%1 GoTo :Eof Set /A j+=%Max% Call Set "NewName=%%NewName:~0,%i%%%%j:~1%_%~1%~4" >nul Copy %2 "%~5\%NewName%" >nul Ren %2 "%NewName%" GoTo :Eof Не очень тестировал, подозреваю, этот алгоритм можно обмануть Цитата Iska:
|
||
------- Последний раз редактировалось megaloman, 18-08-2018 в 18:55. Отправлено: 22:27, 17-08-2018 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 00:46, 18-08-2018 | #12 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата megaloman:
И да, данную задачу, можно свести к возможному минимуму ошибок, при стелепатированных условиях: 1. номера файлов присутствуют в конце имени файла или отсутствуют... 2. все цифры в конце имен файлов могут являться только счетчиком, а могут и не являться... 3. остальные цифры в именах и расширениях файлов, являются только текстовой частью. В общем, если не стоит задачи перенумеровать счетчик файлов, а использовать существующую нумерацию: powershell # Можно использовать абсолютный или относительный путь $src = 'x:\абсолютный_путь\1\*','.\test\2\*' # и т.д.. Здесь астериск, в конце пути, обязателен. $dst = '.\test\out' dir $src -file|%{ try{ [int]$n = $_.basename -replace '.*\D(\d+)$','$1' } catch { $n = 0 } $nname = ($_.basename -replace '\d+$') + ('_{0:D3}_' -f $n) + $_.directory.name ren $_.fullname ($nname + $_.extension) } copy $src $dst |
||
------- Последний раз редактировалось YuS_2, 18-08-2018 в 13:24. Причина: корректировка условий и замена move на copy Отправлено: 09:25, 18-08-2018 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Цитата YuS_2:
Потому — утром |
||
Отправлено: 10:33, 18-08-2018 | #14 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Iska:
На счет частично - это как? Полуцифра? Цитата Iska:
будут приведены к виду "_XXX_" и если число более трех символов, то обрезано оно не будет... В общем, поэкспериментируйте с кодом, лучше один раз увидеть, всё же... Цитата Iska:
- Можно... но деньги вперед! |
|||
------- Отправлено: 12:46, 18-08-2018 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Скрытый текст
Начинаем искать постоянную часть имени . Цитата YuS_2:
Цитата jordan_74:
Цитата YuS_2:
|
||||
Отправлено: 13:21, 18-08-2018 | #16 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата Iska:
Цитата jordan_74:
да и после запуска батника, у меня он "не съел" некоторые тестовые файлы... вот и решил "поучаствовать"... ну и собственно, батник гибридный сварганить - разве это сложно? |
||||
------- Отправлено: 13:39, 18-08-2018 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Цитата YuS_2:
такое
CMD/BAT + javascript: два в одном (Страница 1) — CMD/BAT — Коллекция скриптов и идей — Серый форум
JScript:CMD - вариант с условной компиляцией (Страница 1) — Windows Script Host, HTA (VBScript, JScript) — Общение — Серый форум CMD/BAT + vbscript: два в одном (Страница 1) — Windows Script Host, HTA (VBScript, JScript) — Общение — Серый форум |
||
Отправлено: 13:50, 18-08-2018 | #18 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Всё то же самое... по порядку ссылок: - и в чем отличие вызова powershell? |
||
------- Отправлено: 13:59, 18-08-2018 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
а вот это совсем не есть: Цитата YuS_2:
И как я понимаю, поскольку PowerShell исполняет файлы только с определёнными расширениями (так?), фокус провернуть не удастся. |
||
Отправлено: 14:07, 18-08-2018 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Переименование папки и копирование новой из сети. | Lorttt | Скриптовые языки администрирования Windows | 19 | 19-06-2017 18:56 | |
CMD/BAT - Копирование файла и переименование согласно списка из exel | TPOJIb_55 | Скриптовые языки администрирования Windows | 4 | 01-06-2016 09:28 | |
CMD/BAT - Копирование файлов из подкаталогов и их переименование в название папки | lexxxyatina | Скриптовые языки администрирования Windows | 7 | 13-11-2014 09:44 | |
CMD/BAT - [решено] Копирование и переименование файла по особой маске | DARK-Silver666 | Скриптовые языки администрирования Windows | 5 | 20-12-2012 21:22 | |
VBS/WSH/JS - [решено] переименование и копирование папки | Anufriev | Скриптовые языки администрирования Windows | 6 | 22-05-2012 08:11 |
|