|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Операция с именами файлов |
|
|
CMD/BAT - Операция с именами файлов
|
Новый участник Сообщения: 25 |
Приветствие. Есть небольшой bat'ник с инструкциями, работающими с именами файлов стандарта 11, 12, 13, 14, .... Делалось это для унификации обработки файлов последовательно двумя программа:
@echp off for /L %%a in (11,1,99) do ( [операция первой программы] [операция второй программы] ) Можно ли как-нибудь в bat'ник это прописать для автоматизации? Заранее спасибо. |
|
Отправлено: 22:02, 29-11-2018 |
Новый участник Сообщения: 25
|
Профиль | Отправить PM | Цитировать Ещё раз здравствуйте. Это снова я
![]() В продолжении выше написанного - а как будет выглядеть код, если допустим исходных папок с файлами несколько? К примеру несколько папок с одинаковым количеством и последовательностью файлов и нужно так же последовательно попеременно переименовывать файлы в "11" в каждой папке - обрабатывать сторонними программами - назначать полученному файлу в итоговой папке имя файла из определенной исходной папки. Заранее спасибо! |
Отправлено: 10:30, 08-12-2018 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата rider42:
|
|
Отправлено: 11:56, 08-12-2018 | #22 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:45, 08-12-2018 | #23 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата rider42:
примерно такой скрипт: echo off set programm1=echo executing first_programm.exe set programm2=echo evecuting second_programm.exe set targetdir=%1 set tempdir=%TEMP%\%~n0%RANDOM% call :safetyExecute mkdir %tempdir% if ERRORLEVEL 1 exit 1 FOR /F "tokens=1* delims=]" %%A IN ('FIND /N /V ""') DO ( call :process "%%~B" %* ) call :safetyExecute rmdir /S /Q %tempdir% if ERRORLEVEL 1 exit 3 goto :EOF :process set tempfile=%tempdir%\%RANDOM%%~x1 set targetfullname=%targetdir%\%~n1.mkv call :safetyExecute mklink "%tempfile%" %1 if ERRORLEVEL 1 goto :eof call :safetyExecute %programm1% /key1 %2 /key2 %tempfile% %targetfullname% if ERRORLEVEL 1 goto :eof call :safetyExecute %programm2% --key1 %2 --key2 %tempfile% %targetfullname% if ERRORLEVEL 1 goto :eof call :safetyExecute del %tempfile% goto :eof :safetyExecute echo [running] %* %* if ERRORLEVEL 1 ( echo [error %ERORRLEVEL%] %* exit 2 ) goto :EOF я отказался от переименования в пользу создания символьных ссылок, т.к. в реалистичном workflow исходный файл это или torrent, который после переименования начнёт перекачиваться, или карта памяти из камеры, которая защищена от записи а hardlink не работают с NAS, FAT и требую админских прав |
|
Последний раз редактировалось Busla, 08-12-2018 в 16:24. Причина: добавил ключи для rmdir + tempdir из имени батника Отправлено: 14:57, 08-12-2018 | #24 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать rider42,
Цитата Iska:
как будет выглядеть код, если допустим исходных папок с файлами несколько
@Echo Off
cls
chcp 1251 >nul
Set "LogBat=%~dpnx0.log"
>"%LogBat%" Echo %Date% %Time%
Call :Process "Z:\Download\Video" "Z:\Download\!Vid2CHG" "mp4" "mkv"
Call :Process "Z:\Box_In\Download\Video" "Z:\Box_In\Download\!Vid2CHG" "mp4" "mkv"
Call :Process "Z:\Soft_In\Download\Video" "Z:\Soft_In\Download\!Vid2CHG" "mp4" "mkv"
pause
GoTo :Eof
:Process
Set "BoxIn=%~1"
Set "BoxOut=%~2"
Set "ExtIn=%~3"
Set "ExtOut=%~4"
If Not Exist "%BoxOut%" Md "%BoxOut%"
Set /A NNN=11
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*.%ExtIn%" /b /a:-d /O:D`) DO (
>>"%LogBat%" (Echo: &Echo === begin "%BoxIn%\%%f")
Call :MyMove "%BoxIn%\%%f" "%BoxIn%\%NNN%.%ExtIn%"
Del "%BoxOut%\%NNN%.%ExtOut%" >nul 2>&1
|
|
------- Отправлено: 15:45, 08-12-2018 | #25 |
Новый участник Сообщения: 25
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Суть такова: В папке "d:\uTorrent\work\(WRKD)\LostFilm\" лежит главный файл, а в папке "d:\uTorrent\work\(WRKD)\LostFilm\aud\" дополнительный. В папке же "d:\uTorrent\work\(WRKD)\" должен оказаться итоговый файл после обработки с именем файла как в "d:\uTorrent\work\(WRKD)\LostFilm\" Скрытый текст
@Echo Off cls chcp 1251 >nul Set "LogBat=%~dpnx0.log" >"%LogBat%" Echo %Date% %Time% Call :Process "d:\uTorrent\work\(WRKD)\LostFilm" "d:\uTorrent\work\(WRKD)" "mkv" "mkv" Call :Process "d:\uTorrent\work\(WRKD)\LostFilm\aud\" "d:\uTorrent\work\(WRKD)\LostFilm\Temp1" "mkv" "mkv" pause GoTo :Eof :Process Set "BoxIn=%~1" Set "BoxOut=%~2" Set "ExtIn=%~3" Set "ExtOut=%~4" If Not Exist "%BoxOut%" Md "%BoxOut%" Set /A NNN=11 FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*.%ExtIn%" /b /a:-d /O:D`) DO ( >>"%LogBat%" (Echo: &Echo === begin "%BoxIn%\%%f") Call :MyMove "%BoxIn%\%%f" "%BoxIn%\%NNN%.%ExtIn%" Del "%BoxOut%\%NNN%.%ExtOut%" >nul 2>&1 "C:/Soft/!Video/MKVtoolnix-29.0.0\mkvmerge.exe" --ui-language ru --output ^"D:\uTorrent\work\^(WRKD^)\11.mkv^" --language 0:eng --default-track 0:yes --language 1:eng --default-track 1:no --sub-charset 2:UTF-8 --language 2:eng ^"^(^" ^"D:\uTorrent\work\^(WRKD^)\LostFilm\11.mkv^" ^"^)^" --audio-tracks 1 --no-video --language 1:rus --track-name 1:LostFilm --default-track 1:yes --forced-track 1:yes --sync 1:-9250 ^"^(^" ^"D:\uTorrent\work\^(WRKD^)\LostFilm\aud\11.mkv^" ^"^)^" --track-order 0:0,1:1,0:1,0:2 Call :MyMove "%BoxIn%\%NNN%.%ExtIn%" "%BoxIn%\%%f" Call :MyMove "%BoxOut%\%NNN%.%ExtOut%" "%BoxOut%\%%~nf.%ExtOut%" ) GoTo :Eof :MyMove If Not Exist %1 ( >>"%LogBat%" Echo --- not found %1 Exit /B 2 ) >>"%LogBat%" 2>&1 Move /Y %1 %2 If Exist %2 ( >>"%LogBat%" Echo +++ success Move /Y %1 %2 ) Else ( >>"%LogBat%" Echo --- failure Move /Y %1 %2 >>"%LogBat%" Echo --- failure Move /Y %1 %2 ) GoTo :Eof |
|
Отправлено: 20:52, 08-12-2018 | #26 |
Новый участник Сообщения: 25
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Последний раз редактировалось rider42, 08-12-2018 в 21:27. Отправлено: 21:20, 08-12-2018 | #27 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Перемещение файлов в папки с аналогичными именами | londondron | Скриптовые языки администрирования Windows | 12 | 22-03-2017 15:22 | |
Разное - Операция Перемещение файлов | kaplyaas | Microsoft Windows 10 | 5 | 10-12-2016 15:59 | |
CMD/BAT - Создание папок и файлов со с случайными именами. | Kirstem | Скриптовые языки администрирования Windows | 0 | 26-04-2015 20:06 | |
текстовый файл с именами всех файлов в папке | socap | AutoIt | 19 | 19-02-2012 16:42 | |
Проблема с русскими именами файлов | iml | Общий по Linux | 7 | 25-09-2006 12:40 |
|