Вы должны простить меня (или нет), мои знания о пакетном программировании довольно элементарны.

Я создал несколько командных файлов, чтобы помочь запустить игру, изменить системную переменную (чтобы переместить сохраненные игры в папку с игрой), по сути, сделать ее переносимой.

Он работает, когда находится в папках без пробелов в пути. Однако, если сказать, 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 ответ1

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

(заключить путь в кавычки)

Проблема решена (Гах!)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .