1 (изменено: Yury, 2016-12-26 16:46:32)

Тема: CMD/BAT: Проверка наличия папки, соответствующей разрядности системы

Доброго времени!

Возникла потребность в написании скрипта для копирования расширения программного обеспечения.

К сожалению, я редко пользуюсь скриптами, по этому обращаюсь здесь.

Подскажите, пожалуйста, как реализовать следующий скрипт:

При запуске, скрипт должен проверить наличие папки (в зависимости от разрядности ОС пути разные), если папка есть, то прекратить выполнение.
Если папки нет, то скопировать из сетевого пути папку в определённый каталог, опять же в зависимости от разрядности системы на которой выполняется скрипт.

Набросал скрипт для копирования в зависимости от разрядности ОС и тут всё предельно ясно:

@echo off
set old_dir="\\ws-it-18\etc\LibreOffice\extensions"
set new_dirx32="C:\Program Files\LibreOffice 5\share\extensions"
set new_dirx64="C:\Program Files (x86)\LibreOffice 5\share\extensions"
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
  xcopy %old_dir% %new_dirx32% /s /e /h /y
) else (
  xcopy %old_dir% %new_dirx64% /s /e /h /y
)
exit /b

А вот как реализовать проверку наличия папки в зависимости от разрядности и копирование в зависимости от разрядности, к сожалению, пока не смог, по этому прошу вашей помощи.

Заранее спасибо!
С наступающими праздниками

2

Re: CMD/BAT: Проверка наличия папки, соответствующей разрядности системы

Если только правильно понял:

set "source_dir=\\ws-it-18\etc\LibreOffice\extensions"
if defined ProgramFiles(x86) (
	set "target_dir=%ProgramFiles(x86)%\LibreOffice 5\share\extensions"
) else (
	set "target_dir=%ProgramFiles%\LibreOffice 5\share\extensions"
)
if not exist "%target_dir%\" xcopy /s /e /h /y "%source_dir%" "%target_dir%"