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

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

Ответить
Настройки темы
CMD/BAT - [решено] Как скопировать файлы, указаные в txt файле

Аватара для MrLOLs

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


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

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


Изменения
Автор: MrLOLs
Дата: 19-09-2010
Есть список файлов в txt файле

Например:
Код: Выделить весь код
...........
hl2\materials\Brick\brickwall003a.vtf
hl2\materials\Brick\brickwall009a.vmt
...........
hl2\materials\Concrete\concretefloor003c.vmt
hl2\materials\Concrete\concretefloor003c.vtf
...........
hl2\materials\Props\combine_display01c.vmt
hl2\materials\Props\combine_display01c.vtf
...........
мне нужно чтобы именно эти файлы, которые в списке, скопировались (или переместились) в отдельную папку с сохранением всех путей (каталогов).

Может можно как-то указать эту группу файлов команде COPY?

Очень на вас надеюсь.

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

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off

Set To=E:\Delete\NewDir
Set Txt=E:\Delete\txt.txt

FOR /F "usebackq delims=" %%i IN ("%Txt%") DO xCopy "%%i" "%To%\%%i\" /s /y >nul
Батник располагать в той же директории, что и верхняя директория расположения ваших файлов ( в Вашем случае директория hl2 и батник должны быть рядом. Иначе еще надо указать в скрипте путь где находится папка hl2 и при копировании её учесть.
Если в путях и именах имеются русские буквы - текст файла и батника должны быть в 866 (Dos) кодировке.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

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



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

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


Аватара для MrLOLs

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


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

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


Скрипт выполняет основную задачу, но он создает каталог с названием копируемого файла, в котором лежит сам копируемый файл.

Тоесть получилось так:

Код: Выделить весь код
M:\BAT\NewDir\hl2\materials\Brick\brickwall009a.vmt\brickwall009a.vmt
M:\BAT\NewDir\hl2\materials\Brick\brickfloor001a.vtf\brickfloor001a.vtf
M:\BAT\NewDir\hl2\materials\Brick\brickwall001a.vmt\brickwall001a.vmt
P.S: можно еще указать параметры, чтобы можно было видеть выполнение процесса? И что бы при ошибках (например, если исходный файл не существует) высвечивалось сообщение?

Последний раз редактировалось MrLOLs, 19-09-2010 в 15:57.


Отправлено: 15:26, 19-09-2010 | #3


Ветеран


Contributor


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

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


Виноват!!! не увидел при тестировании, что создаются директории, воспринял их как файлы. Если написать
Код: Выделить весь код
@Echo Off

Set To=E:\Delete\NewDir
Set Txt=E:\Delete\txt.txt

FOR /F "usebackq delims=" %%i IN ("%Txt%") DO xCopy "%%i" "%To%\%%i" /s /y >nul
то директории создаваться не будут, но на каждый файл получим запрос, мне его не удалось подавить, что наверное неприемлемо. Вот более длинный варипнт, но вроде работает
Код: Выделить весь код
@Echo Off

Set To=E:\Delete\NewDir
Set Txt=E:\Delete\txt.txt

FOR /F "usebackq delims=" %%i IN ("%Txt%") DO Call :Coping "%%i" "%To%\%%i"
GoTo :Eof
:Coping
if Not Exist "%~p2\*.*" Md "%~p2" >nul
Copy %1 %2 >nul

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 15:58, 19-09-2010 | #4


Аватара для MrLOLs

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


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

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


Спасибо огромнейшее!!!! )))

Отправлено: 16:28, 19-09-2010 | #5


Ветеран


Contributor


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

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


Вот Вариант. Если нет исходного файла, скрипт остановится с сообщением
Если запустить этот батник с параметром =1, например kuku.bat 1, полУчите лог-файл процесса. Батник останавливаться не будет - смотрите лог.
Код: Выделить весь код
@Echo Off

Set To=E:\Delete\NewDir
Set Txt=E:\Delete\txt.txt
Set FLog=E:\Delete\txt.log

Del %FLog% >nul 1>nul 2>nul 
If Not '%1'=='' (Set Log=%1) Else (Set Log=0)

FOR /F "usebackq delims=" %%i IN ("%Txt%") DO Call :Coping "%%i" "%To%\%%i"
GoTo :Eof

:Coping
If Not Exist %1 (if %Log%==1 (Echo !!! Нет файла %1 >>%FLog%) Else (Echo !!! Нет файла %1 &&Pause)) && GoTo :Eof
if Not Exist "%~p2*.*" Md "%~p2" >nul && if %Log%==1 If Exist "%~p2*.*" (Echo +++ Создана папка "%~p2" >>%FLog%) Else (Echo !!! Не удалось создать папку "%~p2" >>%FLog)

Copy %1 %2 >nul

if %Log%==1 if Exist %2 (Echo +++ Скопировали %1 -в- %2>>%FLog%) Else (Echo !!! Не удалось скопировать %1>>%FLog%)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 19-09-2010 в 17:34.

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

Отправлено: 17:14, 19-09-2010 | #6


Аватара для MrLOLs

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


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

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


Еще раз спасибо, пригодилось через 10 месяцев :D

Отправлено: 23:18, 05-07-2011 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] как скопировать файлы 1,2,3 в папки x,y,z соответственно shadowbat Скриптовые языки администрирования Windows 6 21-05-2010 13:07
Разное - [решено] FoxPro 2.6 Замена фрагментов текста в txt-файле Pashka Программирование и базы данных 7 18-01-2010 19:20
CMD/BAT - [решено] Как скопировать содержимое txt файлов всех подкаталогов в один файл dezertic Скриптовые языки администрирования Windows 3 20-10-2009 12:47
CMD/BAT - файлы вида mmdd*.* - для каждой даты нужно создать каталог, скопировать, файлы milito Скриптовые языки администрирования Windows 2 24-05-2009 23:32
не могу скопировать файлы с диска whiter Хочу все знать 14 26-07-2008 21:13




 
Переход