.bat substituindo a resposta do arquivo

0

Quando eu fiz este arquivo de lote, ao digitar y e n pela primeira vez ele funciona bem, mas assim que eu escolho n, toda vez que tento inserir algo, ele abre a lista de wpl de 7000 músicas e depois fecha e substitui-o por Rick Astley ...

AJUDA!

@echo off
:Ask
echo Would you like to listen to the best songs out of the 7000 I have?(Y/N)
set INPUT=
set /P INPUT=Type input: %=%
If /I "%INPUT%"=="y" goto yes 
If /I "%INPUT%"=="n" goto lolno
echo Incorrect input & goto Ask
:yes
start c:/Users/MyName/Music/Playlists/"The Best of the 7000 songs that I have.wpl"
:lolno
start c:/Users/MyName/Music/Downloads/Music/"Various Artists"/"The Number One 80's Album Disc 2"/"06 Never Gonna Give You Up.mp3"
    
por John Peters 06.11.2013 / 06:52

2 respostas

0

start usa o primeiro argumento entre aspas que encontra como título da janela para uma nova cmd sessão. Se você quiser start de qualquer coisa que tenha espaços, você precisa fazer da seguinte maneira:

start "" "%UserProfile%\Music\Playlists\The Best of the 7000 songs that I have.wpl"

Além disso, use barras invertidas em cmd exclusivamente ao lidar com caminhos como argumentos para comandos internos. A API do Windows é inteligente o suficiente para traduzir barras para você, mas cmd usa / para switches e argumentos nomeados e seu analisador se confunde às vezes, então é melhor evitá-lo.

    
por 06.11.2013 / 07:10
0

A maneira como os rótulos funcionam é que vai para esse rótulo e continua para baixo. Com o seu exemplo:

:yes
start c:/Users/MyName/Music/Playlists/"The Best of the 7000 songs that I have.wpl"
:lolno
start c:/Users/MyName/Music/Downloads/Music/"Various Artists"/"The Number One 80's Album Disc 2"/"06 Never Gonna Give You Up.mp3"

goto yes será executado (pule para :yes e continue para baixo):

:yes
start c:/Users/MyName/Music/Playlists/"The Best of the 7000 songs that I have.wpl"
:lolno
start c:/Users/MyName/Music/Downloads/Music/"Various Artists"/"The Number One 80's Album Disc 2"/"06 Never Gonna Give You Up.mp3"

goto lolno será executado (pule para :lolno e continue para baixo):

:lolno
start c:/Users/MyName/Music/Downloads/Music/"Various Artists"/"The Number One 80's Album Disc 2"/"06 Never Gonna Give You Up.mp3"

O que você precisa fazer é adicionar um goto :eof (eof significa "fim do arquivo") ou exit /b no final de qualquer segmento de rótulo que você não pretende passar:

:yes
start c:/Users/MyName/Music/Playlists/"The Best of the 7000 songs that I have.wpl"
goto :eof

:lolno
start c:/Users/MyName/Music/Downloads/Music/"Various Artists"/"The Number One 80's Album Disc 2"/"06 Never Gonna Give You Up.mp3"
goto :eof

Qualquer comando terminará o script lá. Você também pode definir um rótulo diferente sob eles para pular para, se quiser.

    
por 06.11.2013 / 07:28