Problemas no arquivo em lote no Windows 7

0

Sou novo e nunca fiz nenhum código ou script na minha vida antes e estou tentando fazer um arquivo em lote que irá ...

  • verifique se o iTunes está sendo executado
  • se estiver em execução, abra um arquivo vbs para minha playlist
  • se não estiver em execução, abra o itunes
  • aguarde 30 segundos
  • volte a verificar novamente até poder iniciar o vbs
  • depois, pare de verificar

Estou planejando colocar isso na minha pasta de inicialização para que, quando eu abrir meu computador, ele comece a tocar música desde o início ...

Mas, sem ter nenhuma experiência com codificação, eu praticamente só consegui pesquisar no Google soluções de outras pessoas e testá-las cegamente na esperança de que elas funcionassem ...

até agora encontrado e experimentado

@echo off

PATH=C:\Program Files\iTunes\iTunes.exe

iTunes.EXE YourProgram.exe >nul

if ERRORLEVEL 1 goto Process_NotFound

:Process_Found

echo iTunes is running

goto END

:Process_NotFound

echo iTunes is not running

Itunes.exe

goto END

:END

-

@echo off      
tasklist /FI "IMAGENAME eq iTunes.exe" | find /i "iTunes.exe"      

IF ERRORLEVEL 2 GOTO LOOP2
IF ERRORLEVEL 1 GOTO LOOP1 

:LOOP1 
  start notepad.exe
goto EXIT     

:LOOP1 
  start iTunes.exe 
goto EXIT 

:EXIT

e

tasklist /FI "IMAGENAME eq iTunes.exe" /FO CSV > search.log

FOR /F %%A IN (search.log) DO IF %%~zA EQU 0 GOTO end

start iTunes.exe

:end
Quando eu testá-los, o primeiro morcego não faz nada, o segundo apenas abre um bloco de notas em branco se o iTunes está sendo executado, e o terceiro salva um arquivo de texto na minha área de trabalho chamado "search" e dependendo se o iTunes está em execução ou não muda o que a pesquisa tem dentro.

INFO: No tasks are running which match the specified criteria.
  • Se o iTunes estiver desativado

e

"Image Name","PID","Session Name","Session#","Mem Usage"
"iTunes.exe","7208","Console","1","105,512 K"
  • Se o iTunes estiver sendo executado

Parece que este último é o mais próximo do que eu preciso, mas eu ainda não tenho idéia de como alterar isso e mudá-lo para o que eu preciso.

Vocês podem me ajudar aqui?

    
por xtreemgamer129 28.10.2015 / 20:24

3 respostas

0

Tente um script em lote simples como o abaixo. Não sei qual é o seu script VB, mas se você me mostrar a lógica, adicionarei a esse script para que possa ser iniciado com o script em lote. . .

Isso deve fazer exatamente o que você listou, mas esclarecer o material do script VB para mim e eu adicionarei isso; soa bastante simples. . .

1. Verifique se o iTunes está sendo executado na memória (se estiver em execução, faça o número 3)

2. Inicie o iTunes se ele não estiver em execução e aguarde 30 segundos e verifique se ele está sendo executado novamente na memória

3. Verifique se o iTunes está sendo executado na memória e, se estiver, vá para a rotina VB Script para finalizar a lista de reprodução, etc. e, em seguida, termine o script.

@ECHO OFF

:CheckiTunesRunning
TASKLIST | FINDSTR /I "iTunes.exe"
IF ERRORLEVEL 1 (GOTO StartiTunes) ELSE (GOTO OpenPlayList)

:StartiTunes
START "iTunes" "C:\Program Files\iTunes\iTunes.exe"
::: 30 second pause
PING -n 30 127.0.0.1 > nul
GOTO CheckiTunesRunning

:OpenPlayList
<Open PlayList Logic VB, etc.>
GOTO EOF
    
por 28.10.2015 / 23:00
0

Seu segundo código

@echo off      
tasklist /FI "IMAGENAME eq iTunes.exe" | find /i "iTunes.exe"      
IF ERRORLEVEL 2 GOTO LOOP2
IF ERRORLEVEL 1 GOTO LOOP1 
:LOOP1 
start notepad.exe
goto EXIT     
:LOOP1 
start iTunes.exe 
goto EXIT 
:EXIT

Você tem dois: LOOP1, então você sempre obterá o primeiro para iniciar o notepad.exe. Não há: LOOP2 para ele ir, então quando ele lê "GOTO LOOP2" ele não irá encontrá-lo e continuará abaixo das linhas, então ele encontrará LOOP1, iniciará o bloco de notas, e então irá para EXIT.

@echo off      
tasklist /FI "IMAGENAME eq iTunes.exe" | find /i "iTunes.exe"      
IF ERRORLEVEL 2 GOTO LOOP2
IF ERRORLEVEL 1 GOTO LOOP1 
:LOOP2
start notepad.exe
goto EXIT     
:LOOP1 
start iTunes.exe 
goto EXIT 
:EXIT

Seu terceiro código com

tasklist /FI "IMAGENAME eq iTunes.exe" /FO CSV > search.log

o / FO CSV > search.log

é para [Saída de arquivo] [CSV] [salvo em] [search.log]

Eu usei o [] para mostrar cada sintaxe e o que faz.

    
por 28.10.2015 / 21:12
0

A segunda amostra fornecida vai na direção certa. Embora haja alguns erros que eu encontrei.

  • Você anotou LOOP1 duas vezes, em vez de LOOP1 seguido por LOOP2 . Tente usar nomes mais exclusivos para evitar isso.
  • findstr retorna errorlevel 0 quando a string for encontrada, errorlevel 1 se ainda não existir. Você pode verificar isso usando ECHO% errorlevel% no seu arquivo de lote.

Espero que o exemplo a seguir ajude você a expandir isso ainda mais.

tasklist.exe | findstr "iTunes.exe"

IF ERRORLEVEL 1 GOTO NOTFOUND
IF ERRORLEVEL 0 GOTO RUNNING

:RUNNING
ECHO "Application is running, replace this line with the code you want"  
GOTO END

:NOTFOUND
ECHO "Application not found, replace this line with the code you want"
GOTO END

:END
    
por 28.10.2015 / 21:25