批处理文件中的Windows 7 32位程序文件路径问题

8

我有一个批处理文件,我继承了它,但是在64位的Windows 7环境中无法运行。该批处理文件调用了一个JavaScript,并传递了两个变量。旧的代码如下:

 C:\Progra~1\salesf~1.com\ApexDa~2.0\bin\process.bat     C:\Progra~1\*PATH*     *VARIABLE*

这是在32位XP上运行的,只有一个程序文件。我已经尝试了我能想到的所有方法来更改路径为Program Files x86。我尝试过使用SET PATH,SET ExecPath,%ProgrmaFiles(x86),但它们都返回找不到指定的路径。我知道答案很容易,并且有更好的方法来解决此问题,它将被更改,但目前我需要让它工作。非常感谢任何帮助。

你确定在64位Windows上可用dos(/short)路径名吗? - Christian
@Christian,它们在文件系统驱动程序中实现为硬链接。虽然它可以被禁用(并且对某些情况应该被禁用),但默认情况下仍然启用。 - Joey
2个回答

28

如果您输入

 dir /x c:\
如果这样做,它会以 8.3 格式显示目录列表。 Program Files 扩展为 PROGRA~1,而 Program Files (x86) 则扩展为 PROGRA~2。 因此,我认为您需要更改脚本以使用 PROGRA~2
编辑:我同意马克的观点,这并不理想-这取决于您能够更改多少旧脚本。 在 Win7 计算机上,您应该能够使用 %ProgramFiles%%ProgramFiles(x86)%(请注意尾随“%”)。

1
你可能想让代码更通用化,计算出这个值。例如,类似于for %x in ("%ProgramFiles(x86)%") do echo %~fsx - John
2
那是很危险的。 ~1 和 ~2 不一定映射到 Program FilesProgram Files (x86)。它可能在99%的机器上工作,但波浪线缩写只是意味着“以“Progra”开头的第一个文件夹”,而“第一个”的含义并不明确。 - Mark Lakata

1

将JAVA_HOME导出为/cygdrive/c/Progra~1/java/jdk1.7.0_40/。

这对我有用。


这只能在Cygwin环境下工作,而不能在批处理脚本中。 - the_mandrill
对于批处理脚本,请使用SET A=B:\X\y\Z。 - Li3ro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接