Lol*_*lly 1 windows command batch-file
我试图从文件中读取第一行,我将其设置为环境变量.下面是我使用的变量
@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%
)
Run Code Online (Sandbox Code Playgroud)
假设test.dat包含JDK的路径,如果它是c:\ JDK1.6
在我第一次运行它时
ECHO is off.
ECHO is off.
Run Code Online (Sandbox Code Playgroud)
再次跑步我得到了
c:\JDK1.6
\bin\java
Run Code Online (Sandbox Code Playgroud)
然后我又跑了
c:\JDK1.6
c:\JDK1.6\bin\java
Run Code Online (Sandbox Code Playgroud)
我dint更改test.dat文件.但为什么会这样呢?只有当我第三次运行所有变量设置?看起来很奇怪.我在这做错了吗?请帮帮我.
Batch总是用任何语句替换任何%var%的CURRENT值,然后THEN运行该语句.您的IF语句从IF关键字运行到结束括号.
在第一次运行时,批次替换(无)为Java_home_path,java_path因此ECHO %java_home_path%被解释为'echo`并且批次报告其ECHO状态.
但是,java_home_path设置为c:\JDK1.6from test.dat但JAVA_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!
)
Run Code Online (Sandbox Code Playgroud)
治愈:(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%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8518 次 |
| 最近记录: |