Как получить "" в% 1 вместо "ECHO выключено". - PullRequest
2 голосов
/ 19 января 2020
@echo off
setlocal
title Jupyter Notebook
set init=C:\Users\Sarthik\Machine Learning

set user=%1

echo %user%
if "%user%" == "" (
    set user=%init%
)

echo.
echo Starting Jupyter Notebook at %user%, Please Wait...
echo.
echo.

cd /d %user% && (
jupyter notebook
) || (
echo.
echo.
echo ================== You have entered WRONG PATH ==================
echo.
pause
)

Я довольно новичок ie в пакетном режиме и пытаюсь создать собственную команду для запуска Jupyter Notebook из указанного местоположения. Я хочу, чтобы команда выглядела так:

>jn [filelocation]

, а когда использовать местоположение по умолчанию, просто:

>jn

Я ожидал получить "" в %1, но получаю ECHO выключен. , и я даже не могу проверить равенство из-за ECHO в строке. Как я должен просто получить "" в %1.

PS: я знаю, что получаю это из-за @echo off, но мне тоже нужно это утверждение.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Вы устанавливаете для пользователя значение «%~1» без проверки наличия входного аргумента / параметра пользователя, также вы можете сделать то же самое с путем от %~1 ( %~dp1)

С учетом применения кавычек в ваших командах и замены . (точка) на / , [ , ( or =


set "init=C:\Users\Sarthik\Machine Learning"

set "user=%~1"

echo. => echo/ or echo= or echo( or echo= 

if exist "%~dp1\." (do some task ) else another task

rem :: pay attention to use command endlocal if you are usind setlocal!!

Вы устанавливаете пользователя на "% ~ 1" без проверки, есть ли введенный пользователем аргумент / параметр

rem :: 1st check input if paramenter is not "" and set accordely value in if condition :: 

if not "%~1"=="" (set "_user=%~1") else set "_user=%init%"

Если вы передаете аргумент [file location], с пробелами, вам также необходимо поставить кавычки:


jn "d:\some folder\with spaces\name path\location"


@echo off & setlocal & title Jupyter Notebook

set "init=C:\Users\Sarthik\Machine Learning"
if not "%~1"=="" (set "_user=%~1") else  set "_user=%init%"

echo/ %_user% & echo/ & echo Starting Jupyter Notebook at %_user%, Please Wait...

if exist "%~dp1\." (echo/ & echo/ & cd /d "%_user%" & jupyter notebook & endlocal & goto :EOF
) else (echo/ & echo/ & echo/ ================== You have entered WRONG PATH ==================)
echo/ & pause & endlocal 

Извините, мой ограниченный Engli sh

0 голосов
/ 19 января 2020

Ваш скрипт имеет две проблемы:

  1. , если вы не передаете аргумент% 1, он пуст, поэтому строка с командой echo %1 не работает. Вот почему вы получаете эхо выключено. Переместите строку вниз
  2. , строка с командой cd не работает, если в пути есть пробел. Вы должны использовать кавычки в команде cd.

Просто подсказка: в целях тестирования удалите первую строку (@echo off). В этом случае вы можете увидеть команды, которые выполняются, и вам будет легче следить за тем, что происходит на самом деле.

Следующий скрипт должен работать:

@echo off
setlocal
title Jupyter Notebook
set init=C:\Users\Sarthik\Machine Learning

set user=%1

if "%user%" == "" (
    set user=%init%
)
echo %user%

echo.
echo Starting Jupyter Notebook at %user%, Please Wait...
echo.
echo.

cd /d "%user%" && (
jupyter notebook
) || (
echo.
echo.
echo ================== You have entered WRONG PATH ==================
echo.
pause
)
...