Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本中的If语句不是';不行吗?_Batch File_If Statement - Fatal编程技术网

Batch file 批处理脚本中的If语句不是';不行吗?

Batch file 批处理脚本中的If语句不是';不行吗?,batch-file,if-statement,Batch File,If Statement,我有一个批处理脚本,当输入“edit”时,它应该作为一种调试响应“hello”,并在记事本中打开批处理脚本文件。然而,由于某种无法解释的原因,脚本无论如何都不会响应if语句。如何让它响应“编辑”输入 首先,为什么所有的REM@ECHO关闭s?它看起来很难看,尤其是当它们都是帽子的时候 然后,您想为if语句运行cmd/k,而没有真正的原因吗?对于变量名,您需要将if语句变量最好用双引号括起来,以消除可能出现的空白: @echo off cd /d "C:\projects\py_test" ech

我有一个批处理脚本,当输入“edit”时,它应该作为一种调试响应“hello”,并在记事本中打开批处理脚本文件。然而,由于某种无法解释的原因,脚本无论如何都不会响应if语句。如何让它响应“编辑”输入


首先,为什么所有的
REM@ECHO关闭
s?它看起来很难看,尤其是当它们都是帽子的时候

然后,您想为if语句运行
cmd/k
,而没有真正的原因吗?对于变量名,您需要将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
     )
  )

在我看来,整个脚本毫无意义,但如果我使用这样的东西,我想我会创建一个名为
edit.py
script。这样,用户只需输入名称,即可从python运行;这将使过程更容易理解和直接,并意味着最终用户不必在其条目中附加
.py
,因为它将是每个条目的有效后缀。Gerhard,因为要编辑的文件是批处理文件本身,我建议您使用
%0
选项,而不是
projects-py\u test-dot\u start.bat
。这意味着,无论将来是否重命名该文件,都会找到该文件进行编辑。@Compo谢谢,将添加它,但是我怀疑OP希望该功能在文件不存在(即python文件)的情况下编辑该文件,但是是的,无论如何都没有指定它,谢谢您的好意!Gerhard,我不主张使用毫无意义的
“%~dpf0”
,而只使用
%0
,它应该自动用双引号括起来。但是,如果它让您感觉更安全,也许可以选择
“%~f0”
“%~dpnx0”
。@Compo原因是我们在批处理的早期制作了一张
cd
,所以只需执行
%0
就可以尝试打开cd目录中的文件,但是
%~f0
更好。@Gerhard,就因为你以前用过
CD
不一定重要,试试吧!1. <代码>@CD/D E:\DATA
,2
@Echo([%0]
,3.
@Pause
。输出将是以下内容,
[“C:\Users\Gerhard\Desktop\test.cmd”]
,即双引号中包含的完整路径。
@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
     )
  )