Выбор папки Xcopy

Хорошо, вот ситуация: я хотел бы сделать автоматизированную задачу, используя файл .bat, чтобы скопировать некоторые файлы с сервера на компьютеры пользователей. Место назначения файлов может быть в разных разделах, но расположение (по папкам) одинаково.

Например, у меня есть 1 файл, который я хочу скопировать с сервера в C:\Program Files\Program или D:\Program Files\Program (обратите внимание, что путь, кроме раздела, одинаков)


person Alex M    schedule 11.02.2014    source источник
comment
Должен ли пакетный файл случайным образом выбирать, куда копировать? Должен ли он быть выбран на основе каких-то критериев? Следует ли спрашивать пользователя? ....   -  person MC ND    schedule 11.02.2014
comment
Пакетный файл должен быть скопирован в указанную папку, но раздел может отличаться. Файлы предварительно выбраны, и пользователь не должен вмешиваться   -  person Alex M    schedule 11.02.2014
comment
Как пакетный файл решит, следует ли копировать в C:\SOMEWHERE или D:\SOMEWHERE?   -  person Mark Setchell    schedule 11.02.2014
comment
Используйте %SystemDrive% вместо C:/ или D:/, чтобы он читался как %SystemDrive%\Program Files\Program   -  person 09stephenb    schedule 11.02.2014
comment
Можно ли заставить его решить? Может ли это быть похоже на поиск определенного пути? как с переменной   -  person Alex M    schedule 11.02.2014
comment
Откуда вы собираетесь запускать скрипт?   -  person Matt Williamson    schedule 11.02.2014


Ответы (3)


Что-то вроде этого должно работать, если вы запускаете его с сервера с правами администратора.

@echo off
setlocal

for %%a in (computer1 computer2 computer3) do (
  for %%b in (c d) do (
    if exist "\\%%a\%%b$\Program Files\Program\." (
      xcopy /F /I "yourfile.ext" "\\%%a\%%b$\Program Files\Program"
    )
  )
)

Если вы запускаете его с рабочей станции, вы можете сделать что-то вроде этого:

@echo off
setlocal
for %%a in (c d) do (
  if exist "%%a:\Program Files\Program\." (
      xcopy /F /I "\\Server\Share\yourfile.ext" "%%a:\Program Files\Program"
  )
)
person Matt Williamson    schedule 11.02.2014
comment
Спасибо! Это сработало отлично. Я не знал, как поменять местами разделы - person Alex M; 12.02.2014

Это скопирует несколько файлов:

copy "\\server\share\*.txt" "%ProgramFiles%\target folder\"

Это скопирует дерево папок:

xcopy "\\server\share\folder\*.*" "%ProgramFiles%\target folder\" /s/h/e/k/f/c/z

Переменная %ProgramFiles% содержит расположение папки с программными файлами установки.

person foxidrive    schedule 11.02.2014

Вы имеете в виду базовую копию из одного каталога в другой, как это.

Для файла

@echo off
echo copying files
copy /Y C:\Program Files\Program\TheFileYouWantToCopy.file  D:\Program Files\Program\TheFileYouWantToCopy.file
echo copying files done.
pause
goto :eof

Замените «TheFileYouWantToCopy.file» на файл, который вы хотите скопировать.

Для каталога

Если вы хотите скопировать каталог из одного места в другое, используйте это:

@Echo Off 
Echo Please Press "d"
xcopy "C:\Program Files\Program" "D:\Program Files\Program" 
Echo done
pause
goto :eof

В ответ на комментарии:

Попробуйте %SystemDrive%\Program Files\Program в качестве пути. %SystemDrive% — это место, где система хранит свои файлы, и это может быть что угодно от A:/ до Z:/.

person 09stephenb    schedule 11.02.2014
comment
Нет, я хочу скопировать файл в ту же папку назначения, например: ...:\Program Files\Program, где ... может быть либо C, либо D. Дело в том, что у пользователей эта программа установлена ​​​​на любом разделе, и я не не знаю какой, поэтому синтаксис xcopy должен быть общего вида. - person Alex M; 11.02.2014