Как написать пакетный скрипт, чтобы сделать что-то на основе версии Windows - PullRequest
0 голосов
/ 11 сентября 2018

Я довольно новичок в написании пакетных сценариев, и наша система только что выдвинула мне небольшой изгиб.

Мы получаем новые компьютеры с Windows 10 и Office 16. У нас также есть Windows 7 и Office 14ПК - это сеть, которая еще не была обновлена.

В настоящее время у меня есть пакетный файл, который выполняет xcopy при выполнении, который проверяет файл excel на сервере по версии того же файла на локальном компьютере пользователя.Если серверная версия новее, он копирует локальную версию, затем открывает и запускает файл Excel.

Мне нужно обновить пакет, чтобы он соответствовал обеим версиям Excel, когда ему нужно открыть и запустить файл.

Я могу проверить версию Windows или Excel, поскольку они женаты вместе, но я открыт для любого более надежного метода.

Я играл с WMIC, который возвращает версию Windowsнадежно на наших машинах.Я пробовал другие сценарии из моих исследований в Интернете, и они не работали так, как мне бы хотелось.

Вот мой текущий код:

set "source=\\s001\FOLDER\EXCELFILE TOOL.xlsm"
set "target=C:\Apps\EXCELFILE TOOL PROGRAM\"

xcopy "%source%" "%target%" /y /d /h /k /r

START "" "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.exe" /e "%target%\EXCELFILE TOOL.xlsm"
EXIT

До строки «START» янеобходимо проверить, какая версия windows или office находится на компьютере, а затем изменить запуск для одного из следующих двух параметров:

Опция 1

START "" "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.exe" /e "%target%\EXCELFILE TOOL.xlsm"

Опция 2

START "" "C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.exe" /e "%target%\EXCELFILE TOOL.xlsm"

Любая помощь будет очень признательна, спасибо!

1 Ответ

0 голосов
/ 11 сентября 2018

Если вы просто хотите начать Excel, поиск по каталогам не нужен.

После установки Excel будет иметь подраздел реестра, созданный в:

"[HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER]\Software\Microsoft\Windows\CurrentVersion\App Paths"

Скорее всего по имени:

"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Excel.exe"

Где данные значения Default содержат полный путь к приложению.

С записями под этим ключом просто введите имя приложения, чтобы запустить его:

Start Excel.exe

Запись данных REG_SZ может использоваться с расширением .exe или без него.
(При необходимости функция ShellExecuteEx добавляет расширение при поиске в подразделе «Пути к приложениям») .

Поэтому вы можете просто использовать:

Start Excel

Если вы используете метод, предложенный в большинстве комментариев, вам нужно будет использовать Excel.exe как часть маски поиска!

В приведенном ниже примере используется дополнительная петля For, позволяющая проверять как Program Files, так и Program Files (x86)

.
@For %%A In ("%ProgramFiles%" "%ProgramFiles(x86)%" 2^>Nul
) Do @For /F "Delims=" %%B In ('Where /R %%A Excel.exe 2^>Nul'
) Do @Start "" "%%~B"

Конечно, вы можете игнорировать внешний цикл, если вы уверены, что установленная версия всегда установлена ​​на Program Files (x86).

@For /F "Delims=" %%A In ('Where /R "%ProgramFiles(x86)%" Excel.exe 2^>Nul'
) Do @Start "" "%%~A"

Приведенные выше два примера можно оставить одной строкой, если вы не пересекаетесь в содержании строк длиной не более 80 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...