|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла |
|
CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
|
Новый участник Сообщения: 2 |
Если это возможно, конечно же. (Система - Windows XP, задача - раскидывание папок по разным сетевым папкам в зависимости от названия)
Сильно упрощённо через промежуточный файл код выглядит так: set list=(тут формирование условия для exclude) echo %list% > c:\file.txt xcopy c:\new \\server\vasya\new\ /e /h /k /q /exclude:c:\file.txt С целью, так сказать, шлифовки кода желаю обойтись без промежуточного файла, но не знаю как задать /exclude прямо из переменной list. Пробовал оператор перенаправления /exclude:<%list% или <!list! - так он явно не работает, xcopy такого "файла" не видит. Пробовал перенаправлением дескрипторов (<&n где n - цифра от 0 до 9) - вообще не понял как их правильно использовать, не говоря уж о том как их использовать для xcopy. Идея была - записать %list% в неиспользуемый дескриптор, затем перенаправить его: echo %list% >&3 xcopy c:\new \\server\vasya\new\ /e /h /k /q /exclude:<&3 В этом случае как раз xcopy и не ругается, просто переписывает весь каталог ничего не исключая. Откуда у меня и возникло предположение, что как-то сделать это можно, но как - не знаю, вот спрашиваю у сообщества. (Про robocopy я слышал, но разбираться с ним, проверять надёжность/скорость, менять ключи, сообщать людям об необходимости наличия дополнительной утилиты - в общем КМК не стоит оно того, учитывая что xcopy выше - находится в отдельной ф-ии, вызываемой в батнике с разных мест с разными параметрами и ключами для того xcopy.) |
|
Отправлено: 12:47, 18-04-2019 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Как Вам такое извращение? (в XP не проверял). Самому смешно, но работает!
![]() @Echo Off GoTo :Begin .js .bat \Муз\ :Begin xcopy Box_In\*.* Box_Out\ /s /EXCLUDE:%~dpnx0 Exit /B Цитата 15551:
|
|
------- Последний раз редактировалось megaloman, 18-04-2019 в 19:21. Отправлено: 18:57, 18-04-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Использовать в к-ве списка самого себя - идея!
Но у меня переменная %list% собирается "на ходу", в зависимости от внешних условий, там в "set list=(тут формирование условия для exclude)" это самое формирование условия состоит из кучи IF-ов, так что жёстко задать список не получается. И другой способ - я не представляю себе как. Подробное изложение - раз за разом в отдельную папку местное ПО на работу которого я повлиять не могу выгружает до десятка папок, в них - где пара штук, где пара десятков файлов, и в самой корневой папке - тоже файлы, но уже несколько десятков. Эти папки/файлы в зависимости от имени батником раскидываются по разным операторам, в зависимости от того чей комп сейчас включён, кому какая информация свойственна да ещё и делится чтобы не было одному пусто, другому густо. (это всё в вышеупомянутых IF-ах определяется) |
Отправлено: 20:03, 18-04-2019 | #3 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 23:21, 18-04-2019 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать ИМХО, лучше сделать код кратко и надёжно с созданием служебного файла, чем городить многострочный код.
Цитата alpap:
@Echo Off Set "BoxIn=Z:\Box_In" Set "BoxOut=Z:\Box_Out" Set "Ext@@001=.js" Set "Ext@@002=.bat" Set "Ext@@003=\Муз\" FOR /F "usebackq delims=" %%x IN (`xcopy /L /S /E /F /Y "%BoxIn%\*.*" "%BoxOut%\"`) DO ( Set "S=%%~dpx" Call :ExtCopy "%%S: -> =" "%%" ) Exit /B :ExtCopy If "%~2"=="" Exit /B 0 Set "SS=%~1" Set "SSS=%SS%" FOR /F "usebackq tokens=2 delims==" %%e IN (`Set "Ext@@"`) DO Call Set "SSS=%%SSS:%%e=%%" If "%SS%"=="%SSS%" ( >nul xcopy /Y %1 %2 ) Exit /B |
||
------- Отправлено: 14:49, 19-04-2019 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:55, 19-04-2019 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - XCOPY с переменными из ini-файла. | Gradspb | Скриптовые языки администрирования Windows | 6 | 19-05-2016 13:10 | |
CMD/BAT - [решено] Подстановка переменной из TXT файла | crun4 | Скриптовые языки администрирования Windows | 2 | 09-09-2014 13:01 | |
В XCOPY не работает EXCLUDE | AlexKKK | Microsoft Windows NT/2000/2003 | 3 | 15-02-2008 14:52 | |
[решено] использование команды xcopy | maslinaV | Хочу все знать | 3 | 29-06-2006 19:45 | |
Повтор в цикле команды XCopy | babki | Программирование и базы данных | 6 | 29-11-2005 10:22 |
|