Windows批处理中对带空格路径的处理

一般在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的路径就变成短路径了,如下图

时间: 2025-01-31 07:54:07

Windows批处理中对带空格路径的处理的相关文章

VBS中解决带空格路径的三种方法_vbs

方法一: Set wshell=CreateObject("WScript.Shell") wshell.Run """C:\Program Files\360\360se\360se.exe""",5,True Set wshell = Nothing 方法二: temp="C:\Program Files\360\360se3\360se.exe" path = Chr(34) & temp &

教你修改Windows Vista/Windows 7中软件默认安装路径

现在不少人在装机是都有这样一个习惯,如果系统装在C盘的话,那么软件什么的都会装到D盘E盘等非系统盘中去.但是一般的软件在安装时,系统会将默认路径设置为C:/Program Files/XXXX,而如果按照上面的想法的话,每一个软件都要重新选路径,有没有捷径?有没有? *WIN+R运行regedit打开注册表编辑器 *定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion *在右边的面板中找到ProgramFilesDi *双

Windows批处理中获取文件属性的一些方法_DOS/BAT

windows的batchfile可以有%0-%9参数,其中%0默认表示batchfile的全路径,%1-%9为用户的传入参数. 以下特殊标记可以用来获得文件的属性,如果对%0使用特殊标记,表示获得batachfile的相关属性,如果%1-%9中某个%*是个文件的路径,也可以使用如下特殊标记来获得%*表示文件的相关属性. 例如:D:\testfolder\test.bat 复制代码 代码如下: echo off echo path name: echo %1 echo fully qualifi

Windows系统中的文件搜索方法与技巧

window|技巧 随着电脑硬盘价格的下降和人们经济水平的提升,许多朋友都拥有大容量的硬盘,由此里面存放的文件就越来越多,这让电脑成为一个知识库,许多文件都可以从里面找到.但是这也带来一个问题,当我们要寻找以前看过的某个文件时,如果记不清楚它的位置了找起来会很麻烦,这个时候,采用适当的搜索办法来提高搜索效率是必不可少的.在windows系统中自带了一个搜索功能,真正利用好这个功能对我们的搜索功能有很大的帮助. 充分使用搜索选项 当我们查找一个文件搜索过程结束之后,如果搜索的结果非常多,这个时候就

如何将win8系统中自带的小游戏关闭掉?

  记得以前电脑还不是那么普及的时候,每逢学校上电脑课,都喜欢打开Windows系统中自带的小游戏来玩,每次都是爱不释手的,这些小游戏在Windows系统中的时间很长,从winXP系统到现在的w764位旗舰版系统,一直都是存在的,不过升级到win8系统之后,似乎里面的游戏也变得更加的多样了,不少家长为了防止家里的孩子偷偷玩游戏,也很需要将这些自带的游戏给屏蔽掉,那么如何才能实现操作呢?下面小编就以win8系统为例,来详细的介绍一下吧! 1.首先,咱们返回到win8系统的传统桌面位置,之后,咱们同

Windows 8中在安装VirtualBox时提示“系统找不到指定的路径”

  故障提示: Windows 8中在安装VirtualBox时提示"系统找不到指定的路径". 解决办法: 1. 单击开始菜单,在搜索框输入"CMD"命令打开命令提示符窗口; 2. 按住Shift键后右键单击VirtualBox文件选择"复制为路径"命令,接着,在命令提示符窗口右键单击选择"粘贴"命令; 3. 在命令后添加" -extract -path c:vbox",回车即可将安装文件解压到"

绝对路径提取文件名-文件的绝对路径中提取带后缀的文件名

问题描述 文件的绝对路径中提取带后缀的文件名 例如带绝对路径的文件为:c:newmusic.mp3 怎么编程可以提取出 music.mp3 求代码.我大概知道思路,但是不知道如何实现,请各位大神指教一下--- 解决方案 c++吗 使用string类的例子写一个给你 string str="c:newmusic.mp3 "; string ans; for(int i=str.size()-1;i>=0;i--){ if(i==''){ ans=str.substr(i,str.s

文件名带空格-svn 设置文件名中带空格的文件权限不起作用

问题描述 svn 设置文件名中带空格的文件权限不起作用 现象:文件名中带空格,在svn中设置权限后不起作用,去掉空格后权限起作用 期望:文件名中想留着空格,还想让权限起作用,请明白人给个办法,谢谢.

lucene paoding路径带空格出错问题

问题描述 paoding-analysis.jar里有个PaodingMaker类,在这里头找寻路径不允许带空格.我知道怎么修改,可是在打包的时候出错.我只想要此类问题修改后的jar包.记住,不需要解释,只需要发到我邮箱,或告诉我下载地址.我的邮箱:lileihill@163.com