|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файлов из переменных директорий |
|
CMD/BAT - [решено] Копирование файлов из переменных директорий
|
Пользователь Сообщения: 47 |
Профиль | Отправить PM | Цитировать
Здраствуйте! Помогите разобраться, задача такая: надо копировать из папки 303 все файлы *.VOB по очереди в папку 303_gotov с именем из 303.txt
Структура папок такова: Исполнитель постоянно меняется, содержание файла 303.txt: 01. <Исполнитель> - <Название> 02. <Исполнитель> - <Название> 03. <Исполнитель> - <Название> и т.д. @echo OFF set /p number_FM=Введите номер выпуска: md %number_FM%_gotov set name_txt=%number_FM%.txt for /f "usebackq delims=" %%i in (`find /n /v "" %name_txt% ^| find "[1]"`) do (set name_file=%%i) echo Копируем 1-ый клип copy "%number_FM%\1.*\Disk\*.VOB" "%number_FM%_gotov\%name_file:~3%.VOB" >nul for /f "usebackq delims=" %%i in (`find /n /v "" %name_txt% ^| find "[2]"`) do (set name_file=%%i) echo Копируем 2-ый клип copy "%number_FM%\2.*\Disk\*.VOB" "%number_FM%_gotov\%name_file:~3%.VOB" >nul for /f "usebackq delims=" %%i in (`find /n /v "" %name_txt% ^| find "[3]"`) do (set name_file=%%i) echo Копируем 3-ый клип copy "%number_FM%\3.*\Disk\*.VOB" "%number_FM%_gotov\%name_file:~3%.VOB" >nul for /f "usebackq delims=" %%i in (`find /n /v "" %name_txt% ^| find "[4]"`) do (set name_file=%%i) echo Копируем 4-ый клип copy "%number_FM%\4.*\Disk\*.VOB" "%number_FM%_gotov\%name_file:~3%.VOB" >nul pause |
|
Отправлено: 13:17, 13-03-2014 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать @echo off chcp 1251>nul :# echo Enter the issue number. echo. set /p number_FM= cls if not defined number_FM goto:# echo The issue number is %number_FM%. if exist %number_FM%.txt ( if not exist %number_FM%_gotov ( md %number_FM%_gotov ) ) ( for /f "usebackq delims=" %%i in ("%number_FM%.txt") do ( set /a m+=1 for /f "tokens=2 delims=:" %%j in (' dir "%number_FM%" /ad /b^| findstr /n "^"^| call findstr /b %%m%%: ') do ( copy "%number_FM%\%%j\Disk\*.VOB" "%number_FM%_gotov\%%i.VOB"&& set /a n+=1 ) ) )>nul 2>&1 echo. if not defined m set m=0 echo %m% strings were found in the text file. echo. if not defined n set n=0 echo %n% files were copied. echo. for /l %%i in (1 1 50) do set /p=#<nul& for /l %%j in (1 1 10) do pause<nul>nul pause>nul exit /b |
Отправлено: 07:30, 14-03-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Georgio, Огромное спасибо! все копируется, вот только VOBы почему-то получаются размером от килобайта до 8.5, а исходно 250-350 Мб. Вы не могли бы помочь разобраться?
|
Последний раз редактировалось Сантей, 14-03-2014 в 13:25. Отправлено: 13:05, 14-03-2014 | #3 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата Сантей:
|
|
Отправлено: 13:46, 14-03-2014 | #4 |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Georgio, Еще раз благодарю Вас! Помогло
|
|
Отправлено: 14:01, 14-03-2014 | #5 |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Georgio, только что заметил, не правильный порядок копирования, 1-ый остается 1-ым, а дальше 2-ой копируется под 10-ым названием, 3 клип->11 строка, 4->12... а дальше меняются - 10 клип->2 строка, 11->3 и т.д.
|
Отправлено: 18:21, 18-03-2014 | #6 |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Georgio, тут скорей не в текстовике проблема, а в названии папок - "1.", "2.", "3." и т.д. Надо нули добавлять
|
Отправлено: 19:12, 18-03-2014 | #7 |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Ребят, больше вариантов не будет?
|
Отправлено: 18:31, 26-03-2014 | #8 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата Сантей:
Сантей, если ещё актуально, то попробуйте: @echo off chcp 1251>nul :# echo Enter the issue number. echo. set /p number_FM= cls if not defined number_FM goto:# echo The issue number is %number_FM%. if exist "%number_FM%.txt" ( if not exist "%number_FM%_gotov" ( md "%number_FM%_gotov" ) ) else ( echo "%number_FM%.txt" is absent. pause>nul exit /b ) for /d %%i in ("%number_FM%\*") do ( for /f "delims=." %%j in ("%%~nxi") do ( set $index=%%j call set $index=0%%$index%% for /f "tokens=*" %%k in (' call findstr /b %%$index:~-2%%\. "%number_FM%.txt" ') do ( set /a m+=1 copy "%%i\Disk\*.VOB" /b "%number_FM%_gotov\%%k.VOB" /b>nul&& ( set /a n+=1 ) ) ) ) echo. if not defined m set m=0 echo %m% strings were found in the text file. echo. if not defined n set n=0 echo %n% files were copied. echo. for /l %%i in (1 1 50) do set /p=#<nul& for /l %%j in (1 1 10) do pause<nul>nul pause>nul exit /b |
|
Последний раз редактировалось Georgio, 24-06-2014 в 16:32. Отправлено: 15:50, 24-06-2014 | #9 |
Пользователь Сообщения: 47
|
Профиль | Отправить PM | Цитировать Georgio, Спасибо, теперь на ура копирует
|
Отправлено: 14:57, 25-06-2014 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Копирование файлов из списка | dima05605 | Скриптовые языки администрирования Windows | 2 | 05-09-2012 17:48 | |
CMD/BAT - копирование файлов из подкаталогов | bojfriend | Скриптовые языки администрирования Windows | 8 | 31-08-2011 01:49 | |
Win32 API - Копирование всех файлов из директории | DaRiYs | Программирование и базы данных | 4 | 03-09-2009 23:36 | |
Разное - Копирование файлов из локальной сети | Awes | Microsoft Windows Vista | 5 | 14-08-2007 21:33 | |
[решено] Автоматическое удаление файлов из директорий | BigMac | Microsoft Windows NT/2000/2003 | 19 | 29-05-2005 22:32 |
|