批处理脚本set命令无法正常工作 [英] Batch script set command not working properly
问题描述
我想从文件中读取的第一行,我将其设置为环境变量。下面是我用的变量
I am trying to read the first line from a file and I am setting it as environment variable. Below is the variable I use
@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
Assuming the test.dat contains the path to JDK and if it is c:\JDK1.6
在运行它的第一次,我得到
on running it for the first time I get
ECHO is off.
ECHO is off.
再次运行,我得到
on running again I get
c:\JDK1.6
\bin\java
和上重新运行,我得到
c:\JDK1.6
c:\JDK1.6\bin\java
我不力改变test.dat的文件。但是,为什么会出现这种情况?只有当我运行第三次所有的变量就设置?看起来怪怪的。我在做什么错在这?请帮助我。
I dint change the test.dat file. But why is this happening ? Only when I run for third time all the variables getting set ? Looks weird. Am I doing anything wrong in this ? Please help me out.
推荐答案
批量总是与它的当前值的任何语句替换任何%VAR%,然后运行该语句。您的IF语句由关键字IF在封闭括号中运行。
Batch always replaces any %var% in any statement with its CURRENT value and THEN runs the statement. Your IF statement runs from the IF keyword to the closing-parenthesis.
在为第一次运行时,一批替代品(无) Java_home_path
和 JAVA_PATH
所以 ECHO%java_home_path%
是PTED为echo`间$ p $和批次报告其ECHO状态。
On the first run, batch substitutes (nothing) for Java_home_path
and for java_path
so the ECHO %java_home_path%
is interpreted as 'echo` and batch reports its ECHO status.
然而, java_home_path
设置为 C:\\ JDK1.6
从测试。 DAT
,但 JAVA_PATH
设置为(无)\\ BIN \\ java中
HOWEVER, java_home_path
is set to c:\JDK1.6
from test.dat
but JAVA_PATH
is set to (nothing)\bin\java
在第二轮中,这些现有的值进行适当的报告, java_home_path
设置从 TEST.DAT
和 JAVA_PATH
设置为 C:\\ JDK1.6 \\ BIN \\ java中
On the second run, these existing values are duly reported, java_home_path
is set from test.dat
and JAVA_PATH
is set to c:\JDK1.6\bin\java
在第三次运行,你得到你所期望的报姓名。
On the third run, you get the names you expect reported.
固化:(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!
)
治疗:(1)
@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%
这篇关于批处理脚本set命令无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!