명령 구문이 올바르지 않습니다.

명령 구문이 올바르지 않습니다.

GPO를 통해 시작 시 실행되는 배치 파일을 만들려고 합니다.

일괄 처리에서는 TeamViewer 호스트를 설치하여 최종 사용자의 입력 없이 이를 최종 사용자에게 배포할 수 있습니다.

스크립트는 로컬에 저장된 컴퓨터 이름을 가진 파일이 있는지 확인하고 있으면 중지하도록 설계되었습니다. 그렇지 않은 경우 Teamviewer의 모든 흔적을 제거하고 호스트 버전을 설치한 다음 로컬에서 파일을 생성하여 올바른 버전이 설치되었음을 표시합니다.

스크립트를 실행하면 콘솔에 '명령 구문이 올바르지 않습니다.'라는 오류가 표시됩니다.

마법사 중 누구라도 문제 없이 배치 파일을 실행할 수 있다면 GPO도 실행할 수 있어야 한다는 이미지를 촬영할 때 어디에서 문제가 발생하는지 조언해 줄 수 있습니까?

더 쉽고 깔끔한 방법이 있으면 알려주시기 바랍니다.

IF 없이 스크립트를 실행하면 문제 없이 작동합니다.

if exist "C:\TeamViewer15\%computername%.jmw" (exit) else (

tasklist /FI "IMAGENAME eq TeamViewer.exe" 2>NUL | find /I /N "TeamViewer.exe">NUL
if "%ERRORLEVEL%"=="0" (GOTO :KILL) ELSE (GOTO :REMOVEMSI)
:KILL
taskkill /f /im TeamViewer.exe
TIMEOUT 2
GOTO :REMOVEMSI
:REMOVEMSI
wmic product where vendor="TeamViewer"
if not "%errorlevel%"=="0" GOTO :CHECKOS
for /f "tokens=2 delims==" %%f in ('wmic product Where "vendor like 'TeamViewer'" get IdentifyingNumber /value ^| find "="') do set "id=%%f"
msiexec.exe /x "%id%" /qn
GOTO :CHECKOS
:CHECKOS
cd\
Set "OS64=C:\Program Files (x86)"
IF EXIST "%OS64%" (GOTO :UNINSTALL64) ELSE (GOTO :UNINSTALL32)
:UNINSTALL64
cd\
Set "OLD64="C:\Program Files (x86)\TeamViewer\Version"*"
IF EXIST "%OLD64%" (GOTO :PREVIOUS64) ELSE (GOTO :REMOVE64)
:UNINSTALL32
cd\
Set "OLD32=C:\Program Files\TeamViewer\Version*"
IF EXIST "%OLD32%" (GOTO :PREVIOUS32) ELSE (GOTO :REMOVE32)
:PREVIOUS32
cd\
cd %ProgramFiles%\TeamViewer\Version*
IF NOT EXIST "*uninstall*" GOTO :REMOVE32
start uninstall.exe /S 
GOTO :REMOVE32
:REMOVE32
cd\
cd %ProgramFiles%\TeamViewer
IF NOT EXIST "*uninstall*" GOTO :REMOVEFILES32
start uninstall.exe /S
GOTO :REMOVEFILES32
:REMOVEFILES32
reg delete "HKLM\Software\TeamViewer" /f
cd %temp%
rd TeamViewer /s /Q
GOTO :INSTALL
:PREVIOUS64
cd\
cd %ProgramFiles(x86)%\TeamViewer\Version*
IF NOT EXIST "*uninstall*" GOTO :REMOVE64
start uninstall.exe /S
GOTO :REMOVE64
:REMOVE64
cd\
cd %ProgramFiles(x86)%\TeamViewer
IF NOT EXIST "*uninstall*" GOTO :REMOVEFILES64
start uninstall.exe /S
GOTO :REMOVEFILES64
:REMOVEFILES64
reg delete "HKLM\Software\Wow6432Node\TeamViewer" /f
cd %temp%
rd TeamViewer /s /Q



REM INSTALL TEAM VIEWER HOST V15

start /wait msiexec.exe /i "\\DFSNAMESERVER\files\admin\Software Distribution\TeamViewer\TeamViewer_Host.msi" /qn CUSTOMCONFIGID=MYCUSTOMERCONFIGID APITOKEN=CUSTOMERAPITOKENKEY ASSIGNMENTOPTIONS="--reassign --alias %ComputerName% --grant-easy-access"



REM CREATE INSTALLATION MARKER

md C:\TeamViewer15
fsutil file createnew "C:\TeamViewer15\%computername%.jmw" 10
)



exit

이 포럼의 TeamViewer 및 서버 세부 정보를 변경했습니다(해당 부분은 작동함).

많은 감사 톰

답변1

처음 등장 시(미완일 수도 있음):

  1. 절대명령 블록 내부에서 :label또는 사용:: label-like comment괄호 안에 넣습니다 (). (라인 1): if exist "C:\TeamViewer15\%computername%.jmw" (exit)대신 사용if exist "C:\TeamViewer15\%computername%.jmw" (exit) else ( 그리고해당 닫는 괄호를 제거합니다(65번째 줄, 키워드 앞 어딘가 exit).
  2. start명령(주로61번째 줄):항상제목예를 들어start "" /wait msiexec.exe /i …
  3. (for /f "tokens=2 delims==" %%f in …12번째 줄):

관련 정보