1

Я пишу командный файл, чтобы открыть Netflix в Google Chrome в полноэкранном режиме. Мои знания о пакетных файлах инфантильны, хотя ...

chrome.exe --start-fullscreen --app=https://www.netflix.com

Это, конечно, работает, когда запускается из того же каталога, что и исполняемый файл chrome, но не работает где-либо еще.

Я ищу способ написать командный файл для поиска и найти chrome.exe, а затем выполнить его с помощью вышеуказанных ключей. Таким образом, я могу поделиться командным файлом с другими людьми, и он будет работать независимо от их пути к файлу. Это можно сделать?

--редактировать--

Поскольку Appleoddity предполагает, что поиск не нужен, будет ли это лучшим способом написать пакетный файл для этой цели ?:

@echo off    
cd\program files (x86)\google\chrome\application
chrome.exe --start-fullscreen --app=https://www.netflix.com

3 ответа3

2

Поскольку люди могут иметь программные файлы на нечетном диске, а не на C (необычно, но возможно), лучше использовать системную переменную для папки с программными файлами. Кроме того, как это может быть в локальной папке данных приложения, мы должны проверить там тоже.

rem :: set file location

if exist %localappdata%\google\chrome\application\chrome.exe (
 set chrome_exe="%localappdata%\google\chrome\application\chrome.exe"
)  

if exist %PROGRAMFILES(x86)%\google\chrome\application\chrome.exe (
 set chrome_exe="%PROGRAMFILES(x86)%\google\chrome\application\chrome.exe"
 )

if exist %PROGRAMFILES%\google\chrome\application\chrome.exe (
 set chrome_exe="%PROGRAMFILES%\google\chrome\application\chrome.exe"
 ) 

 rem :: run chrome
%chrome_exe% --start-fullscreen --app=https://www.netflix.com
2

Я написал что-то, что работает. Что я не смог бы сделать без поста сэра Аделаиды. Так что спасибо, сэр Аделаида, за ваш пример. Также спасибо всем, кто внес свой вклад; это было познавательно :)

(Я выбрал пакетную обработку вместо PowerShell, потому что любой, с кем я хотел бы поделиться сценарием PowerShell, сначала должен изменить свои параметры политики выполнения. Что не нужно с партией.)

if exist "%localappdata%\google\chrome\application\chrome.exe" set file_found="yes" 
if not exist "%localappdata%\google\chrome\application\chrome.exe" set file_found="no" 
if %file_found%=="yes" set chrome_exe="%localappdata%\google\chrome\application\chrome.exe"

if exist "%programfiles%\google\chrome\application\chrome.exe" set file_found="yes" 
if not exist "%programfiles%\google\chrome\application\chrome.exe" set file_found="no" 
if %file_found%=="yes" set chrome_exe="%programfiles%\google\chrome\application\chrome.exe"

if exist "%programfiles(x86)%\google\chrome\application\chrome.exe" set file_found="yes" 
if not exist "%programfiles(x86)%\google\chrome\application\chrome.exe" set file_found="no" 
if %file_found%=="yes" set chrome_exe="%programfiles(x86)%\google\chrome\application\chrome.exe" 

%chrome_exe% --start-fullscreen --app=https://www.netflix.com
1

Я бы определенно порекомендовал перейти на PowerShell (на мой взгляд, это проще) и имеет кучу cmd-let, чтобы помочь с такими вещами.

В этом случае мы предполагаем, что Google Chrome имеет 2 пути установки, и поэтому это основная переменная, которую мы должны учитывать. Используя опцию Test-Path, мы можем продиктовать 2 UNC-пути для потенциальной опции.

Вот скрипт, который использует «Test-Path», который мы можем проверить, если Google Chrome существует в Program Files (x86), и если нет, мы присваиваем значение LocalAppData.

Вот:

    $ConfirmGoogleChrome = (Test-Path "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
    $Process = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

        function OpenChromeFullScreen {
        If ($ConfirmGoogleChrome -eq $True) {
        start $Process --start-fullscreen --app="https://www.netflix.com"
        }
        else {
        $Process = "%localappdata%\google\chrome\application\chrome.exe"
        start $Process --start-fullscreen --app="https://www.netflix.com"
        }
   }
OpenChromeFullScreen

Обратите внимание, что PowerShell был включен по умолчанию в Windows Vista (я полагаю) и далее, и для его работы требуется Net Framework, который должен быть включен в большинстве современных версий ОС.

Обновить

Из-за комментариев о том, что это может быть не так надежно, как требуется (поскольку мы не можем предположить, что C:\ - это путь установки ОС), я сделал небольшое "улучшение":

# Variables for the HomeDrive (OS Install Path)
# Inclusive of the path to AppData

$OSInstallPath  = $env:HOMEDRIVE
$OSLocalAppData = $env:LOCALAPPDATA

# Performs Checks on the end path

$ChromeProgramFiles = (Test-Path "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe") 
$ChromeLocalAppData = (Test-Path "$OSLocalAppData\google\chrome\application\chrome.exe")

# Variable for Google Chrome Path
# We default this to Program Files
$GoogleChrome = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"


# Function to set the paths
Function ConfirmSetPaths {
    If ($ChromeProgramFiles -eq $False) {
    $GoogleChrome = "$OSLocalAppData\google\chrome\application\chrome.exe" 
  }
}

ConfirmSetPaths
Start "$GoogleChrome" --start-fullscreen --app="https://www.netflix.com"

По сути, мы создаем переменные (« $OSInstappPath » и « $OSLocalAppData », которые являются системными связанными переменными) для пути установки на вашем ПК (поскольку путь UNC может изменяться в зависимости от того, кто его запускает.

Затем мы создаем дополнительные 2 переменные для двух путей, где может существовать chrome.exe . Функция ConfirmSetPaths проверит, существует ли chrome.exe по пути "по умолчанию" на ПК (в данном случае мы использовали « C:\Program Files (x86)\Google\Chrome\Application\chrome.exe »).

Если он существует здесь, он запускает программу. Если нет, он изменяет переменную $GoogleChrome на локальную папку «Данные приложения», а затем запускается отсюда.

Изменения:

  1. Теперь использует переменные $env для указания пути установки ОС;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .