BaNg@taobao

Just Do It!

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  20 Posts :: -1 Stories :: 202 Comments :: 0 Trackbacks

一般在Windows的软件大部分安装在c:\ Program Files下面,比如我机器上的Java位置就是C:\Program Files\Java\jdk1.5.0_12,假如如果你在批处理中调用java或者javaw,会这么写:

set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
set EXE_JAVA=%JAVA_HOME%\bin\java
%EXE_JAVA% -version

那样会报告一个错误:
'C:\Program' 不是内部或外部命令,也不是可运行的程序
或批处理文件。


以前为了避免这种问题,会把把JDK挪到c:\,但不是一个通用的解决办法,现在可以采用两种方式来解决:

1 加上引号,表示一个完整路径,这个在好多服务器批处理中常用到比如jboss,  tomcat。
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
set EXE_JAVA="%JAVA_HOME%"\bin\java
%EXE_JAVA% -version

2 转成短路径,这个我认为是最好的解决办法。
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
for %x in ("%JAVA_HOME%") do set JAVA_HOME=%~sx
set EXE_JAVA=%JAVA_HOME%\bin\java
%EXE_JAVA% -version

需要注意的是,在批处理文件比如 run.bat 中,上面的for语句的变量有两个%%号。
for %%x in ("%JAVA_HOME%") do set JAVA_HOME=%%~sx

另:如果只是想得到固定带空格的短路径,有一个快捷方法,使用cmd定位到某个目录,输入 debug 启动x86虚模式调试,然后quit推出,那么cmd的路径就变成短路径了,如下图





posted on 2008-04-23 15:04 Always BaNg. 阅读(18734) 评论(10)  编辑  收藏 所属分类: Java网摘备用

Feedback

# re: windows批处理中对带空格路径的处理 2008-04-23 15:29 lvq810
C:盘一般只装系统文件  回复  更多评论
  

# re: windows批处理中对带空格路径的处理 2008-04-23 16:49 阿里
仅对已存路径有效。  回复  更多评论
  

# re: windows批处理中对带空格路径的处理 2008-04-23 17:03 Always BaNg.
@阿里
能告诉仅对已存路径有效是什么意思?或许有些东西需要改进,望不啬赐教!  回复  更多评论
  

# re: windows批处理中对带空格路径的处理[未登录] 2008-04-23 17:12 啊光
用双引号就好了.  回复  更多评论
  

# re: windows批处理中对带空格路径的处理 2008-04-23 17:58 隔叶黄莺
我一般都是用双引号的  回复  更多评论
  

# re: windows批处理中对带空格路径的处理 2008-04-24 15:07 懒人
像jdk这样的还是默认安装路径比较好  回复  更多评论
  

# re: windows批处理中对带空格路径的处理 2008-06-07 15:40 ever
如果是for循环中有空格如果处理呢  回复  更多评论
  

# re: windows批处理中对带空格路径的处理 2008-11-17 00:58 huzza
非常感谢!!!  回复  更多评论
  

# re: windows批处理中对带空格路径的处理 2008-11-17 01:02 huzza
我有一个程序,路径中含有空格,如果使用引号来包括路径,程序就会crash;使用楼主的方法--也就是使用短路径,就不会有问题.多谢!  回复  更多评论
  

# re: windows批处理中对带空格路径的处理 2008-11-29 17:31 阿娇
学习学习!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: