![]() |
Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
Если это возможно, конечно же. (Система - 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.) |
Как Вам такое извращение? (в XP не проверял). Самому смешно, но работает! :) Переменная list не нужна. Проверено, если список будет задан с отступом, то он в исключения не попадет.
Код:
@Echo Off Код:
@Echo Off Цитата:
|
Использовать в к-ве списка самого себя - идея!
Но у меня переменная %list% собирается "на ходу", в зависимости от внешних условий, там в "set list=(тут формирование условия для exclude)" это самое формирование условия состоит из кучи IF-ов, так что жёстко задать список не получается. И другой способ - я не представляю себе как. Подробное изложение - раз за разом в отдельную папку местное ПО на работу которого я повлиять не могу выгружает до десятка папок, в них - где пара штук, где пара десятков файлов, и в самой корневой папке - тоже файлы, но уже несколько десятков. Эти папки/файлы в зависимости от имени батником раскидываются по разным операторам, в зависимости от того чей комп сейчас включён, кому какая информация свойственна да ещё и делится чтобы не было одному пусто, другому густо. (это всё в вышеупомянутых IF-ах определяется) |
15551,
можно загнать в исключение и без xcopy, например так: Код:
@echo off |
ИМХО, лучше сделать код кратко и надёжно с созданием служебного файла, чем городить многострочный код.
Цитата:
Код:
@Echo Off |
Цитата:
Цитата:
|
Время: 15:11. |
Время: 15:11.
© OSzone.net 2001-