Если это возможно, конечно же. (Система - 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:
CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
-
megaloman
Re: CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
Как Вам такое извращение? (в XP не проверял). Самому смешно, но работает!
Переменная list не нужна. Проверено, если список будет задан с отступом, то он в исключения не попадет.
Код:
Если батник длинный, то, скорее всего, этот плод воспалённого воображения будет работать медленно. Может быть, так будет оптимальнее...
Код:
Цитата 15551:
задача - раскидывание папок по разным сетевым папкам в зависимости от названия)
Может, лучше поискать другой способ? (тогда надо более подробное изложение задачи)
Переменная list не нужна. Проверено, если список будет задан с отступом, то он в исключения не попадет.Код:
Код: Выделить всё
@Echo Off
xcopy Box_In\*.* Box_Out\ /s /EXCLUDE:%~dpnx0
Exit /B
.js
.bat
\Муз\Если батник длинный, то, скорее всего, этот плод воспалённого воображения будет работать медленно. Может быть, так будет оптимальнее...
Код:
Код: Выделить всё
@Echo Off
GoTo :Begin
.js
.bat
\Муз\
:Begin
xcopy Box_In\*.* Box_Out\ /s /EXCLUDE:%~dpnx0
Exit /BЦитата 15551:
задача - раскидывание папок по разным сетевым папкам в зависимости от названия)
CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
Может, лучше поискать другой способ? (тогда надо более подробное изложение задачи)
-
15551
Re: CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
Использовать в к-ве списка самого себя - идея!
Но у меня переменная %list% собирается "на ходу", в зависимости от внешних условий, там в "set list=(тут формирование условия для exclude)" это самое формирование условия состоит из кучи IF-ов, так что жёстко задать список не получается.
И другой способ - я не представляю себе как. Подробное изложение - раз за разом в отдельную папку местное ПО на работу которого я повлиять не могу выгружает до десятка папок, в них - где пара штук, где пара десятков файлов, и в самой корневой папке - тоже файлы, но уже несколько десятков. Эти папки/файлы в зависимости от имени батником раскидываются по разным операторам, в зависимости от того чей комп сейчас включён, кому какая информация свойственна да ещё и делится чтобы не было одному пусто, другому густо. (это всё в вышеупомянутых IF-ах определяется)
Но у меня переменная %list% собирается "на ходу", в зависимости от внешних условий, там в "set list=(тут формирование условия для exclude)" это самое формирование условия состоит из кучи IF-ов, так что жёстко задать список не получается.
И другой способ - я не представляю себе как. Подробное изложение - раз за разом в отдельную папку местное ПО на работу которого я повлиять не могу выгружает до десятка папок, в них - где пара штук, где пара десятков файлов, и в самой корневой папке - тоже файлы, но уже несколько десятков. Эти папки/файлы в зависимости от имени батником раскидываются по разным операторам, в зависимости от того чей комп сейчас включён, кому какая информация свойственна да ещё и делится чтобы не было одному пусто, другому густо. (это всё в вышеупомянутых IF-ах определяется)
-
alpap
Re: CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
15551,
можно загнать в исключение и без xcopy, например так:
Код:
можно загнать в исключение и без xcopy, например так:
Код:
Код: Выделить всё
@echo off
set "excl="*.js" "*.bat" "Муз*""
for /f "delims=" %%a in ('dir /b %excl%') do set "%%~nxa=Exclude"
for /f "delims=" %%a in ('dir /b') do if not defined %%~nxa echo %%~nxa
pause-
megaloman
Re: CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
ИМХО, лучше сделать код кратко и надёжно с созданием служебного файла, чем городить многострочный код.
Цитата alpap:
можно загнать в исключение и без xcopy, например так:
Красиво придумано, для меня открытие, что имя переменной в CMD может содержать пробелы. Интересно, есть ли ограничение на длину идентификатора? Но, тем не менее, xcopy хорош тем, что создаёт нужную структуру каталогов при копировании. Вот код, который имитирует /Exclude, в качестве развлечения:
Код:
Цитата alpap:
можно загнать в исключение и без xcopy, например так:
CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
Красиво придумано, для меня открытие, что имя переменной в CMD может содержать пробелы. Интересно, есть ли ограничение на длину идентификатора? Но, тем не менее, xcopy хорош тем, что создаёт нужную структуру каталогов при копировании. Вот код, который имитирует /Exclude, в качестве развлечения:
Код:
Код: Выделить всё
@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-
alpap
Re: CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
Цитата megaloman:
xcopy хорош
я вообще тоже за него и с учетом
Цитата 15551:
у меня переменная %list% собирается "на ходу", в зависимости от внешних условий
как по мне так гораздо проще редактировать txt, особенно с учетом того что сам bat может лежать в кладовой для bat, а txt под рукой.
xcopy хорош
CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
я вообще тоже за него и с учетом
Цитата 15551:
у меня переменная %list% собирается "на ходу", в зависимости от внешних условий
CMD/BAT - Помогите задать параметр exclude команды xcopy из переменной без промежуточного файла
как по мне так гораздо проще редактировать txt, особенно с учетом того что сам bat может лежать в кладовой для bat, а txt под рукой.