2014-07-11 2 views
0

Win7/WinXP 용 레지스트리 키를 작성하는 일괄 처리 스크립트를 사용하여 이전 비디오 게임을 제대로 실행할 수 있지만 배치 자체가 작동하지 않습니다.배치 스크립트 if 문이 '예기치 못한 오류'를 반환합니다.

echo on 

setlocal ENABLEEXTENSIONS 
set KEY_NAME=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 311080 
set VALUE_NAME=InstallLocation 
for /F "usebackq tokens=3*" %%A IN (`reg query "%KEY_NAME%" /v "%VALUE_NAME%" 2^>nul ^| find "%VALUE_NAME%"`) do (

set OUTPUT_SEVEN=%%A%%B 
) 

setlocal ENABLEEXTENSIONS 
set KEY_NAME=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 311080 
set VALUE_NAME=InstallLocation 
for /F "usebackq tokens=3*" %%A IN (`reg query "%KEY_NAME%" /v "%VALUE_NAME%" 2^>nul ^| find "%VALUE_NAME%"`) do (
set OUTPUT_XP=%%A%%B 
) 

reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 311080" 
if %ERRORLEVEL% EQU 0 goto Win7 

reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 311080" 
if %ERRORLEVEL% EQU 1 goto WinXP 


:Win7 
(
echo Running Windows 7 Script 
REG ADD "HKLM\SOFTWARE\Wow6432Node\Madia\Echelon" /V Path1 /T reg_sz /D "%OUTPUT_SEVEN%\\Data\\" /F 
REG ADD "HKLM\SOFTWARE\Wow6432Node\Madia\Echelon" /V Path2 /T reg_sz /D "%OUTPUT_SEVEN%\\Data\\" /F 
REG ADD "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Echelon" /V InstallLocation /T reg_sz /D "%OUTPUT_SEVEN%\\" /F 
REG ADD "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Echelon" /V InstallSource /T reg_sz /D "%OUTPUT_SEVEN%\\" /F 
set QQ=%OUTPUT_SEVEN% 
goto exit 
) 

:WinXP 
(
echo Running Windows XP Script 
REG ADD "HKLM\SOFTWARE\Madia\Echelon" /V Path1 /T reg_sz /D %OUTPUT_XP%\\Data\\" /F 
REG ADD "HKLM\SOFTWARE\Madia\Echelon" /V Path2 /T reg_sz /D %OUTPUT_XP%\\Data\\" /F 
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Echelon" /V InstallLocation /T reg_sz /D %OUTPUT_XP%\\" /F 
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Echelon" /V InstallSource /T reg_sz /D %OUTPUT_XP%\\" /F 
set QQ=%OUTPUT_XP% 
goto exit 
) 
:exit 
(
start /d"%QQ%" /wait Game.exe 
) 

명령 프롬프트에서 스크립트를 실행 : 다음과 같이 스크립트입니다

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>gamelauncher.bat 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>echo on 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>setlocal ENABLEEXTENSIONS 


c:\Program Files (x86)\Steam\SteamApps\common\Echelon>set KEY_NAME=HKLM\SOFTWARE 
\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 311080 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>set VALUE_NAME=InstallLoca 
tion 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>for /F "usebackq tokens=3* 
" %A IN (`reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\ 
Uninstall\Steam App 311080" /v "InstallLocation" 2>nul | find "InstallLocation"` 
) do (set OUTPUT_SEVEN=%A%B) 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>(set OUTPUT_SEVEN=C:\Progr 
amFiles (x86)\Steam\steamapps\common\Echelon) 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>setlocal ENABLEEXTENSIONS 


c:\Program Files (x86)\Steam\SteamApps\common\Echelon>set KEY_NAME=HKLM\SOFTWARE 
\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 311080 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>set VALUE_NAME=InstallLoca 
tion 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>for /F "usebackq tokens=3* 
" %A IN (`reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\St 
eam App 311080" /v "InstallLocation" 2>nul | find "InstallLocation"`) do (set OU 
TPUT_XP=%A%B) 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>reg query "HKLM\SOFTWARE\W 
ow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 311080" 

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninsta 
ll\Steam App 311080 
DisplayIcon REG_SZ C:\Program Files (x86)\Steam\steam\games\1b116bbca7 
813266288d61df77b3baca0297aaab.ico 
DisplayName REG_SZ Echelon 
HelpLink REG_SZ http://support.steampowered.com/ 
InstallLocation REG_SZ C:\Program Files (x86)\Steam\steamapps\common\E 
chelon 
Publisher REG_SZ MADia Entertainment 
UninstallString REG_SZ "C:\Program Files (x86)\Steam\steam.exe" steam: 
//uninstall/311080 
URLInfoAbout REG_SZ http://www.madia.ru/echelon.html 
NoRepair REG_DWORD 0x1 
NoModify REG_DWORD 0x1 


c:\Program Files (x86)\Steam\SteamApps\common\Echelon>if 0 EQU 0 goto Win7 
\Steam\steamapps\common\Echelon was unexpected at this time. 

c:\Program Files (x86)\Steam\SteamApps\common\Echelon>set QQ=C:\ProgramFiles (x8 
6)\Steam\steamapps\common\Echelon 

내가 여기에 무슨 일이 있었는지 알아낼 수있는 것보다 더 똑똑한 사람, 나는 매우 감사하게 될 거라고합니다.

답변

2

문제는

set QQ=C:\ProgramFiles (x86)\Steam\steamapps\common\Echelon 

이 실행될 때 변수에 할당 된 값에 괄호입니다.

set "QQ=%OUTPUT_SEVEN%" 

set QQ=%OUTPUT_SEVEN% 

변경하고 set 명령의 나머지 부분에 대한 동일한 작업을 수행. 이렇게하면 특수 문자와 관련된 문제를 방지하고 저장된 값의 끝에 불필요한 공백이 포함되는 것을 방지 할 수 있습니다.

관련 문제