Когда я создал этот пакетный файл, при первом наборе y и n он работает нормально, но как только я выбираю n, каждый раз, когда я пытаюсь что-то ввести, он открывает список wpl из 7000 песен, затем закрывает его и заменяет его с Риком Эстли ...

ПОМОГИТЕ!

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

2 ответа2

0

start использует первый встреченный аргумент в качестве заголовка окна для нового сеанса cmd . Если вы хотите start что-нибудь с пробелами, вы должны сделать это следующим образом:

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

Кроме того, используйте обратную косую черту в cmd исключительно при работе с путями в качестве аргументов встроенных команд. Windows API достаточно умен, чтобы переводить слэши за вас, но cmd использует / для переключателей и именованных аргументов, и его анализатор иногда путается, поэтому лучше избегать этого.

0

Работа меток заключается в том, что она идет к этой метке, а затем продолжается вниз. С вашим примером:

: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 будет работать (перейти к :yes и продолжить вниз):

: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 будет работать (перейти к :lolno и продолжить вниз):

: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 (eof означает "конец файла"), либо exit /b в конце любого сегмента метки, через который вы не собираетесь проваливаться:

: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

Любая команда закончит сценарий там. Вы также можете определить другую метку под ними, чтобы перейти, если хотите.

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