Во-первых, почему все 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
)
)