您必须原谅我(或不原谅我),我对批处理编程的了解还相当基础。
我创建了几个批处理文件来帮助启动游戏,更改系统变量(将保存的游戏移动到游戏文件夹内)基本上使其可移植。
当它位于路径中没有空格的文件夹中时,它可以工作。但是当放入 Program Files (x86) 中时,它就失败了。
这是我用来获取相对父路径的代码。
for %%B in (%~dp0\.) do set APPPATH=%%~dpB
这是重要的部分,脚本中的其他所有内容都依赖于此。
以下是其余内容:
: Get path of parent folder (relative)
for %%B in (%~dp0\.) do set APPPATH=%%~dpB
set APPPATH2=%APPPATH%Microsoft Games\Freelancer\
: Modify path of Freelancer in the registry to point to the portable install
REG ADD "HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft Games\Freelancer\1.0" /v AppPath /t REG_SZ /d "%APPPATH2%\" /f
: Set path for Saved Games
Set USERPROFILE=%APPPATH%
: Start Freelancer up
START "" "%APPPATH%Microsoft Games\Freelancer\EXE\Freelancer.exe"
是否可以修改此代码以处理脚本中的空格?我已经设法设置了模板,因此它不会影响其他任何内容,但这部分路径就是它失败的地方。
我使用 APPPATH 变量来输出相对于计算机上文件位置的完整路径。
谢谢您的帮助!
答案1
大家别担心,答案其实很简单,有时我确实会打自己的头。
: Get path of parent folder (relative)
for %%B in (%~dp0\.) do set APPPATH=%%~dpB
到:
: Get path of parent folder (relative)
for %%B in ("%~dp0\.") do set APPPATH=%%~dpB
(用引号括住路径)
问题解决了(啊!)