Если оператор в пакетном скрипте не работает? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть пакетный скрипт, который при вводе «edit» должен вывести «hello» как своего рода отладку и открыть файл пакетных скриптов в блокноте.Однако по какой-то необъяснимой причине скрипт не будет отвечать на оператор if, несмотря ни на что.Как мне заставить его реагировать на «редактировать» ввод?

REM @ECHO OFF
cd/
cd projects\py_test
ECHO Use this batch script to lauch Python modules living in "C:\Projects\py_test\" ONLY.
ECHO.
SET /P name="Type file name with file extension .py to start or type EDIT to edit this .bat: "
REM @ECHO OFF
cmd /k IF %name%==edit GOTO EDIT
REM IF EXIST %name% py %name%
REM IF NOT EXIST %name% echo  [101mERROR: The requested file could not be found.  Make sure the file exists in "C:\Projects\py_test\" and that the filename includes the ".py" extension.[0m 
@ECHO OFF
:EDIT
ECHO HELLO
notepad projects-py_test-dot_start.bat`

1 Ответ

0 голосов
/ 12 февраля 2019

Во-первых, почему все REM @ECHO OFF с?Это выглядит некрасиво, особенно когда они все прописные.

Тогда, вы хотите запустить cmd /k для оператора if без реальной причины?С именем переменной вам нужно предпочтительно заключить переменные оператора if в двойные кавычки, чтобы исключить возможные пробелы:

@echo off
cd /d "C:\projects\py_test"
echo Use this batch script to lauch Python modules living in "C:\Projects\py_test\" ONLY.
echo/
set /p name="Type file name with file extension .py to start or type EDIT to edit this .bat: "
if defined name set "name=%name:"=%"
if /i "%name%"=="edit" goto edit
goto :EOF
:edit
echo hello
notepad echo "%~f0"

, но, предполагая, что вы просто хотите запустить скрипт Python, если он существует, иначе отредактируйте себя,тогда я бы вместо этого сделал эту версию без ярлыков.Он просто проверяет, существует ли введенное имя (надеясь, что пользователь набрал полный скрипт с расширением), в противном случае мы добавляем тест на расширение в случае, если пользователь набрал только имя, а не расширение .:

@echo off
cd /d "C:\projects\py_test"
echo Use this batch script to lauch Python modules living in "C:\Projects\py_test\" ONLY.
echo/
set /p name="Type file name with file extension .py to start or type EDIT to edit this .bat: "
 if defined name set "name=%name:"=%"
 if /i "%name%"=="edit" notepad "%~f0"
 if exist "%name%" (
             python "%name%"
    ) else (
            if exist "%name%.py" (
                      python "%name%.py"
       ) else (
             echo "%name%" does not exist
     )
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...