Gravando um arquivo em lotes para abrir o Netflix no modo de tela cheia no Google Chrome

1

Estou escrevendo um arquivo em lotes para abrir o Netflix no Google Chrome no modo de tela cheia. Meu conhecimento de arquivos em lote é infantil, embora ...

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

Obviamente, isso funciona quando executado no mesmo diretório que o executável chrome, mas não funciona em nenhum outro lugar.

Estou procurando uma maneira de escrever o arquivo em lotes para pesquisar e localizar o chrome.exe e, em seguida, executá-lo com as opções acima. Dessa forma, eu posso compartilhar o arquivo em lotes com outras pessoas e ele funcionará independentemente de seus caminhos. Isso pode ser feito?

--editar--

Como Appleoddity sugere que a pesquisa é desnecessária, essa seria a melhor maneira de escrever um arquivo em lotes para esse fim ?:

@echo off    
cd\program files (x86)\google\chrome\application
chrome.exe --start-fullscreen --app=https://www.netflix.com
SUA MÃE
fonte
2
Você não precisa procurá-lo. O Chrome é instalado apenas por sistema program filesou por usuário em %localappdata%. Você também pode consultar as chaves do registro para o local da instalação. Procurar na unidade será terrivelmente ineficiente.
Appleoddity

Respostas:

2

Como as pessoas podem ter arquivos de programa em uma unidade ímpar, em vez de C (incomum, mas possível), é melhor usar a variável do sistema para a pasta de arquivos do programa. Além disso, como pode estar na pasta de dados do aplicativo local, devemos verificar também.

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
Sir Adelaide
fonte
Isso é muito mais conciso e responde à pergunta original usando "lote", conforme solicitado. Ele também usa variáveis ​​de ambiente que são essenciais. Eu recomendaria apenas adicionar um adicional else ifpara verificar o %programfiles%caminho também, pois você não pode assumir que o sistema operacional será de 64 bits.
Appleoddity 11/01
Fiquei curioso e tentei rodar em três sistemas. Todos os meus sistemas têm a Program Files (x86)instalação do Google Chrome, no entanto, esse script em lote aparentemente tenta abrir o meu %localappdata%em cada PC. Vocês poderiam confirmar?
precisa saber é o seguinte
não sei por que o if-else não estava funcionando corretamente. Esta nova versão com declarações separadas funciona para mim
Sir Adelaide
No meu sistema, o Chrome está instalado em 'Arquivos de Programas (x86)', mas o arquivo em lotes está configurando a variável chrome_exe como 'Arquivos de Programas' mesmo que não esteja instalado lá:"C:\Program Files\google\chrome\application\chrome.exe" --start-fullscreen --app=https://www.netflix.com The system cannot find the path specified.
YOURMOM
2

Eu escrevi algo que funciona. O que eu não poderia ter feito sem a publicação de Sir Adelaide. Então, obrigado, sir Adelaide, por seu exemplo. Agradeço também a todos que contribuíram; tem sido educativo :)

(Escolhi o lote em vez do PowerShell porque qualquer pessoa com quem desejasse compartilhar o script do PowerShell precisaria primeiro alterar suas configurações de política de execução. O que não é necessário no lote.)

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
SUA MÃE
fonte
1
YOURMOMMA —o {|||||||] :: ;; :: ;; :: ;; ::> Primeiro nome legal .... Em segundo lugar, por seus comentários sobre a necessidade de alterar as configurações da política de execução, eu Queria apontar a minha resposta aqui para um exemplo da maneira como escrevo scripts em lote e incorpore a lógica do PowerShell a ele e, em seguida, executo o PowerShell sem precisar alterar manualmente a política de execução, mas sim com o - ExecutionPolicy Bypassassim ocorre no tempo de execução ou qualquer outra coisa . superuser.com/questions/1282303/… Apenas para sua informação, mais do que qualquer coisa para você.
Pimp Juice IT
1

Definitivamente, eu recomendaria a conversão para o PowerShell (é mais fácil, na minha opinião) e tem muitos cmd-lets para ajudar com coisas como essa.

Nesse caso, assumimos que o Google Chrome possui 2 caminhos de instalação e, portanto, essa é a principal variável que precisamos levar em consideração. Usando a opção Caminho do Teste , podemos ditar 2 caminhos UNC para a opção em potencial.

Aqui está um script que usa o "Caminho de teste". Podemos testar se o Google Chrome existe em Arquivos de programas (x86) e, se não, atribuímos o valor de LocalAppData.

Aqui está:

    $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

Observe que o PowerShell foi ativado por padrão no Windows Vista (eu acredito) e exige que o Net Framework funcione - o que deve ser ativado na maioria das instalações modernas de sistemas operacionais.

Atualizar

Devido aos comentários afirmando que isso pode não ser tão robusto quanto necessário (como não podemos assumir que C:\é o caminho da instalação do SO), fiz uma pequena "melhoria":

# 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"

Essencialmente, criamos variáveis ​​(" $OSInstappPath" e " $OSLocalAppData" que são variáveis ​​vinculadas ao sistema) para o caminho da instalação no seu PC (pois o caminho UNC pode mudar dependendo de quem o executa.

Em seguida, criamos 2 variáveis ​​adicionais para os dois caminhos onde chrome.exehouver. A função ConfirmSetPathstestará se chrome.exeexiste no caminho "padrão" no PC (neste caso, usamos " C:\Program Files (x86)\Google\Chrome\Application\chrome.exe").

Se existir aqui, inicia o programa. Caso contrário, ele altera a variável para $GoogleChromeser a pasta Local App Data e, em seguida, executa a partir daqui.

Alterar:

  1. Agora usa $envvariáveis ​​para ditar o caminho de instalação do SO;
DankyNanky
fonte
1
Vale a pena notar que você pode precisarSet-ExecutionPolicy -Unrestricted
DankyNanky
Este é um bom esforço e útil, mas o OP perguntou como fazer isso em lote e não em PowerShell. O Powershell adiciona complicações desnecessárias para uma tarefa tão simples e seu código parece mais "complexo" do que precisa. Ao programar para "trabalhar em todos os sistemas", você não pode supor que o sistema operacional esteja instalado em C :, ou que os arquivos de programa estejam nos arquivos de programa (x86) ou que o sistema operacional seja de 64 bits. Veja a outra resposta sobre o uso de variáveis ​​de ambiente.
Appleoddity 11/01
1
Eu só pedi lote porque era tudo que eu sabia (já que sou um peido velho). Definitivamente, estou aberto a sugestões como a que Michael apresentou. Tais sugestões nos expõem a novas idéias.
YOURMOM
1
Para qualquer pessoa que chegue a esta página do Google: A extensão do arquivo powershell é
.ps1
1
HMM, erro de sintaxe em meu nome. I devem reavaliar quando casa :)
DankyNanky