gpt4 book ai didi

windows - 批处理脚本设置命令无法正常工作

转载 作者:可可西里 更新时间:2023-11-01 10:53:41 26 4
gpt4 key购买 nike

我正在尝试从文件中读取第一行并将其设置为环境变量。下面是我使用的变量

@echo off
if EXIST "test.dat" (
set JAVA_HOME_PATH=
set JAVA_PATH=
set /p JAVA_HOME_PATH=<test.dat
echo %JAVA_HOME_PATH%
set JAVA_PATH=%JAVA_HOME_PATH%\bin\java
echo %JAVA_PATH%
)

假设test.dat包含JDK的路径,如果是c:\JDK1.6

在第一次运行它时我得到了

ECHO is off.
ECHO is off.

再次运行我得到

c:\JDK1.6
\bin\java

再次运行我得到

c:\JDK1.6
c:\JDK1.6\bin\java

我改变了 test.dat 文件。但是为什么会这样呢?仅当我第三次运行所有变量时才设置?看起来很奇怪。我这样做有什么不对吗?

最佳答案

Batch 始终将任何语句中的任何 %var% 替换为其当前值,然后运行该语句。您的 IF 语句从 IF 关键字运行到右括号。

在第一次运行时,批量替换(无)Java_home_pathjava_path 因此 ECHO %java_home_path% 被解释为 'echo ` 和 batch 报告其 ECHO 状态。

然而,java_home_path 设置为 c:\JDK1.6 来自 test.datJAVA_PATH 是设置为 (nothing)\bin\java

在第二次运行时,这些现有值被正式报告,java_home_path 设置自 test.dat 并且 JAVA_PATH 设置为 c:\JDK1.6\bin\java

在第三次运行中,您得到了预期报告的名称。

治愈:(1)

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
if EXIST "test.dat" (
set JAVA_HOME_PATH=
set JAVA_PATH=
set /p JAVA_HOME_PATH=<test.dat
echo !JAVA_HOME_PATH!
set JAVA_PATH=%JAVA_HOME_PATH%\bin\java
echo !JAVA_PATH!
)

治愈:(2)

@echo off
if not EXIST "test.dat" ECHO No test.dat&goto :eof
set JAVA_HOME_PATH=
set JAVA_PATH=
set /p JAVA_HOME_PATH=<test.dat
echo %JAVA_HOME_PATH%
set JAVA_PATH=%JAVA_HOME_PATH%\bin\java
echo %JAVA_PATH%

关于windows - 批处理脚本设置命令无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15479542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com