我已经编写了bat文件以使用%JAVA_HOME%
从系统变量中获取路径并将其分配给一个变量,现在如何用作设置路径,因为在设置路径中它要求我在" ">代码之间提供此路径,我无法添加。
请帮我添加它,如何?
如果使用set variable="value"
或set "variable=value"
定义环境变量,则有很大的不同。阅读为什么在命令行上使用"set var = text"后没有带有"echo %var%"的字符串输出的答案?了解详情。
强烈建议使用set "variable=value"
,即将字符串分配给不带双引号的环境变量,并引用始终用双引号括起来的环境变量的值。
看起来您使用:
@ECHO OFF
set JAVA_CMD="C:Program FilesJavajdk1.8.0_92jrebinjava"
%JAVA_CMD% TransferArborDeereFiles
pause
因此,要获取未指定文件扩展名java
可执行文件.exe
路径,因此 Windows 命令解释器需要搜索本地环境变量PATHEXT
中列出的文件扩展名java.*
,可以使用以下批处理代码:
@ECHO OFF
set JAVA_CMD="C:Program FilesJavajdk1.8.0_92jrebinjava"
rem %JAVA_CMD% TransferArborDeereFiles
for /F "delims=" %%I in (%JAVA_CMD%) do set "JAVA_CMD_PATH=%%~dpI"
set JAVA_CMD
pause
此批处理文件仅输出环境变量的值JAVA_CMD
和JAVA_CMD_PATH
。
但更好的是:
@ECHO OFF
setlocal EnableExtensions DisableDelayedExpansion
set "JAVA_CMD=%ProgramFiles%Javajdk1.8.0_92jrebinjava.exe"
for /F "delims=" %%I in ("%JAVA_CMD%") do set "JAVA_CMD_PATH=%%~dpI"
rem Output all environment variables starting with JAVA_CMD.
set JAVA_CMD
rem "%JAVA_CMD%" TransferArborDeereFiles
rem "%JAVA_CMD_PATH%OtherScriptOrExe" "argument 1" "argument 2"
endlocal
此批处理文件应在命令提示符窗口中执行,而不是双击批处理文件。在开发中调试批处理文件时,应始终通过从命令提示符窗口中运行批处理文件来完成,以查看 Windows 命令解释器输出的可能导致退出批处理文件执行的错误错误消息。
要了解使用的命令及其工作原理,请打开命令提示符窗口,在那里执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
echo /?
endlocal /?
for /?
pause /?
rem /?
set /?
setlocal /?