일부 프로그램에서 사용되는 Windows 명령줄 설치 프로그램: 구문 및 매개변수 표시 문제

일부 프로그램에서 사용되는 Windows 명령줄 설치 프로그램: 구문 및 매개변수 표시 문제

시간이 지날수록 (다행히도) 찾는 것이 더 흔해졌습니다.명령줄 설치 프로그램대부분의 Windows GUI 프로그램에 대해 일괄 및 오프라인 콘솔 설치가 가능합니다.

하지만 가끔 나는이상한 행동-?( , -help... 등을 통해) 사용 구문을 요청할 때 여러 설치 프로그램을 사용합니다 .새 콘솔을 열어( cmd) 창문,(빠른) 구문 표시그리고 매개변수...그리고 다시 닫아빨리하기 때문에 사용자는읽을 시간이 없어아무것.

예: Bitvise SSH 설치 프로그램(평가판사용 가능). 구문을 다음과 같이 요청합니다.해당 문서말한다 :

BvSshServer-Inst.exe -?

새로운 cmd 콘솔다음과 같이 말합니다.

This program will install Bitvise SSH Server 6.07
on the machine it is being run on.
... blah blah blah 

... 그리고 창문다시 문을 닫는다. 더 이상 읽을 시간이 없어요.
Windows 7에서는 이러한 이상한 동작을 본 적이 있지만 Windows XP에서는 그렇지 않았습니다(세 대의 컴퓨터에서 테스트).

왜 이런 일이 발생합니까?
어떻게 해결/해결할 수 있나요?

메모:
- 원격 콘솔을 통해 내 컴퓨터에 액세스할 때(SSH 원격 콘솔로 테스트) 문제가 해결됩니다(텔넷도 작동할 것이라고 생각하지만 테스트하지는 않았습니다).

d:\Installer\>BvSshServer-Inst.exe -? | more
This program will install Bitvise SSH Server 6.07
on the machine it is being run on.

Bitvise SSH Server is an SSH2 server for Windows 2000 or newer, including
the latest Windows 8.1 and 2012 R2. Please see www.bitvise.com/ssh-server
for more information.

This program must be run by a user with administrator privileges. If run
without command line options, installation will be performed in interactive
mode. If run with command line options without the '-interactive' option,
installation will be performed in unattended mode.

Usage:
 BvSshServer-Inst -installDir=directory OR -defaultSite OR -site=site-name
                  [-force OR -abortOnWarning[=warning-list-or-mask]
                  [-acceptEULA] [-interactive] [-noRollback]
                  [-activationCode=activation-code-hex]
                  [-keypairs=keypairs-file]
                  [-settings=settings-file]
                  [-siteTypeSettings=fileName]
                  [-startService]
                  [-startBssCtrl]

노트 2:
- 이 명령은 문제를 해결하지 못합니다.

start "BvSshServer-Inst.exe -? | more"
cmd /k "BvSshServer-Inst.exe -? | more"
BvSshServer-Inst.exe -? | more > Syntax.txt
BvSshServer-Inst.exe -? > Syntax.txt
BvSshServer-Inst.exe -? | more 2> Syntax.txt

답변1

왜 이런 일이 발생합니까?

Bitvise 외에는 다른 예시를 제공하지 않으셨는데, UAC 프롬프트 문제인 것 같습니다. 프로그램이 필요한 상승된 권한으로 실행되지 않아 UAC 프롬프트를 표시해야 하는 경우 출력은 다른(새로운?) STDOUT에 기록됩니다. 따라서 두 번째 cmd 창과 출력 파일(>)로의 표준 텍스트 리디렉션이 작동하지 않는 이유는 무엇입니까?이 스택 오버플로 질문이것을 확인하는 것 같습니다.

XP에서 작동하는 이유는 UAC가 없습니다. 마찬가지로 관리자 권한 명령 프롬프트를 사용하여 Windows 7의 명령줄에서도 동일한 동작을 얻을 수 있습니다.

  • 달리다->cmd.exe-> Ctrl+ Shift+Enter

  • Bitvise 설치 프로그램이 있는 곳으로 이동하여 -help옵션을 사용하여 실행하세요. 출력이 정상적으로 됩니다.

어떻게 해결/해결할 수 있나요?

해당 프로그램에 대한 UAC 프롬프트에 의한 STDOUT 리디렉션 없이 명령줄에서 이러한 프로그램을 실행하는 솔루션에 대해 위 질문의 마지막 설명은 다음을 사용할 수 있다는 단서를 제공합니다.고도 PowerToys이것을 달성하기 위해.

  • 다음에서 파일을 다운로드하세요.여기(Elevation PowerToys 페이지 상단에 링크되어 있음) 이것은 실제로 아카이브입니다. 두 번 클릭하여 원하는 위치에 파일을 추출합니다(폴더를 제안합니다!).

  • 파일이 추출되면 elevate.cmd 및 elevate.vbs를 복사하여 유용한 위치(동일한 디렉터리)에 배치합니다.

  • 만들기배치 파일, elevate.cmd에 대한 적절한 경로를 고려해야 합니다. 이렇게 하면 여전히 UAC 프롬프트가 표시되지만 Bitvise에는 표시되지 않으며 이것이 모든 차이를 만듭니다.

     @echo off
     setlocal enabledelayedexpansion
    
     set CmdDir=%~dp0
     set CmdDir=%CmdDir:~0,-1%
    
     :: Check for Mandatory Label\High Mandatory Level
     whoami /groups | find "S-1-16-12288" > nul
     if "%errorlevel%"=="0" (
     echo Running as elevated user.  Continuing script.
     ) else (
     echo Not running as elevated user.
     echo Relaunching Elevated: "%~dpnx0" %*
    
     if exist "%CmdDir%\elevate.cmd" (
         set ELEVATE_COMMAND="%CmdDir%\elevate.cmd"
     ) else (
         set ELEVATE_COMMAND=elevate.cmd
     )
    
     set CARET=^^
     !ELEVATE_COMMAND! cmd /k cd /d "%~dp0" !CARET!^& call "%~dpnx0" %*
     goto :EOF
     )
    
     :: Continue script here
     BvSshClient-Inst.exe -help 
     BvSshClient-Inst.exe -help > txt.txt
    
     echo Arguments passed: %*
    

이러한 장난감 중 일부를 설치하는 데 대한 기본 지침은 다음과 같습니다.여기.

관련 정보