15551
18-04-2019, 12:47
Если это возможно, конечно же. (Система - 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.)
Сильно упрощённо через промежуточный файл код выглядит так:
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.)