Win 7 - problem wsadowy, nie lubi spacji w nazwach folderów

0

Musisz mi wybaczyć (lub nie) moją znajomość programowania wsadowego jest dość szczątkowa.

Stworzyłem kilka plików wsadowych, aby pomóc w uruchomieniu gry, zmienić zmienną systemową (aby przenieść zapisane gry w folderze gry) w zasadzie sprawić, że będzie przenośny.

Działa, gdy znajduje się w folderach bez spacji w ścieżce. Jednak gdy powiedzmy, Program Files (x86), to się kończy.

Oto kod, którego używam do uzyskania względnej ścieżki nadrzędnej.

for %%B in (%~dp0\.) do set APPPATH=%%~dpB

To jest ważna część, wszystko inne w skrypcie zależy od tego.

Oto reszta:

: 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"

Czy możliwe jest zmodyfikowanie tego kodu, aby mógł obsługiwać spacje w skryptach? Udało mi się skonfigurować mój szablon, aby nie wpływał na nic innego, ale ta część ścieżki jest tam, gdzie spada.

Używam zmiennej APP PATH, aby wyświetlić pełną ścieżkę względem miejsca, w którym znajduje się plik na komputerze.

Dzięki za pomoc!

Ctrlaltdenied
źródło
Pamiętaj, aby dodać tagi OS do swojego pytania, aby ludzie wiedzieli, do jakiego systemu operacyjnego się odnosi.
Julian Knight
Sposób, w jaki robisz komentarz w partii, jest albo z REM, albo z :: Twój pojedynczy dwukropek działa, ale nie do końca tak, jak myślisz. Więc mógłbyś przejść do stworzonej przez siebie etykiety! Aby to udowodnić, spróbuj uruchomić ten plik wsadowy pastebin.com/raw.php?i=cJ0P7JSC
barlop
Dziękuję Barlop, widziałem to w innym kodzie w tym samym celu, więc po prostu skopiowałem zgaduję, dzięki za informacje!
Ctrlaltdenied

Odpowiedzi:

1

Nieważne ludzie, odpowiedź była zwodniczo prosta, czasami uderzam się w głowę.

: Get path of parent folder (relative)
for %%B in (%~dp0\.) do set APPPATH=%%~dpB

Do:

: Get path of parent folder (relative)
for %%B in ("%~dp0\.") do set APPPATH=%%~dpB

(obuduj ścieżkę cytatami)

Problem rozwiązany (Gah!)

Ctrlaltdenied
źródło
Nie zapomnij przyjąć własnej odpowiedzi - myślę, że musisz poczekać 24 godziny.
Julian Knight