1

나는 결코 프로그래머는 아니지만 본질적으로 그 일을 맡았습니다. .exe/msi 파일 만 수행 할 수 있다는 것을 제외하고 기존 배포 설정을 사용하여 scccm을 사용하여 컴퓨터 네트워크를 업데이트하도록 지정되었습니다.숨겨진 실행중인 일괄 처리로 변환 (콘솔 창 없음)

어쨌든, 내가 작성한 배치는 환상적으로 작동합니다. 내가 조용하게 달릴 필요가 없다는 걸 제외하고.

  1. 는 % 컴퓨터 이름 %를 사용하는 전용 네트워크 공유에 로그를 만들고마다 뭔가 일이 라인을 추가하고, % ERRORLEVEL %의 시간과 날짜 스탬프를 포함하여 성공을보고합니다 본질적으로 여기가 수행하는 작업은 .
  2. 특정 프로그램이 실행 중인지 확인하고 60 분을 기다렸다가 다시 시도한 경우 이전에 설치 한 버전을 확인하지 않으면
  3. 버전에 따라 robocopy를 사용하여 오래된 파일을 새 것.
  4. 그런 다음
  5. 그냥 컴퓨터 이름
  6. 에 따라 설치된 한 DB를 구성하는 모든 작업 로그 및 종료에서 제대로 완료되었는지
  7. 바탕 화면에
  8. 보고서를 아이콘을 넣을 수 있도록 레지스트리를 수정 TNS 이름의 경로를 설정합니다 .

일괄 처리는 네트워크 공유의 모든 항목을 가져 와서 같은 공유에 저장합니다. tt가이 작업을 수행하는 데 걸린 시간이 얼마 남지 않았기 때문에 나는 어떻게 든 .exe 또는 .msi로 변환 할 수 있기를 기대하며 조용히 실행합니다. 나는 내가해야한다면 익숙지 않은 언어로 다시 쓸 수 있다고 생각한다.

나는 두 가지 방법을 시도했다. 위대한,하지만 조용한 옵션을 작동 iexpress; BAT To EXE 변환기는 작동하지만 컴파일을 거부합니다. 그리고 마지막으로 7zS.sfx를 사용하여 7zip을 컴파일했지만 일단 컴파일하면 실행을 거부합니다. 모든 exe에 대해 나는 소프트웨어 정보, 아이콘, Microsoft 호환성 등을 조정하기 위해 자원 해커를 사용하여 주위를 샅샅이 뒤지고 있습니다. INNO 설치로 지적되었지만 침묵하는 플래그를 만들 수는 없으며 대부분의 기사는 아이콘을 클릭하고 거기에 깃발을 넣어, 내 문제에 대한 가난한 해결책입니다.

어디에서 시작해야합니까?

+0

는 * "어쨌든, 일괄 내가 환상적으로 작품을 썼다, 나는 그것이 자동으로 실행해야합니다 제외" * - 자동으로 배치 파일 *을 실행하는 데 문제가 있습니까? * 조용히 * 당신은 정확히 무엇을 의미합니까? 콘솔 창없이 실행 하시겠습니까? –

+0

정확하게, 혼란에 대 한 미안 해요. – Greensystemsgo

+0

말 그대로 자동 응답으로 컴파일 할 때 * "실행을 거부합니다"* 란 의미입니까? – GTAVLover

답변

0

콘솔 창없이 배치 파일을 실행하는 여러 가지 쉬운 방법이 있습니다. 배치 파일을 다시 구현할 필요가 없습니다.

타사 소프트웨어가 필요없는 간단한 접근 방식은 WScript.Shell.Run methodintWindowStyle 매개 변수가 0 (= 창을 숨김)으로 설정하여 배치 파일을 실행하는 VBScript 또는 JScript 스크립트를 사용하고 있습니다. 답변을 인용

@Shaji to How to run a batch file without launching a “command window”? 기준 :

저장을 예를 들어, WScript와는으로 다음, 이 배치 파일의 이름으로 "testing.bat"를 교체 한 후에 hidecmd.vbs.

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs 
strArgs = "cmd /c testing.bat" 
oShell.Run strArgs, 0, false 
oShell.Run

의 두번째 파라미터 값 intWindowStyle 프로그램의 화면의 모습을 나타내는 제로 값이고 숨겨진 창 이다.

기준 다른 방법은 여기 https://msdn.microsoft.com/en-us/library/d5fk67ky.aspx


이며, 참조 :


.exe가 정말로 필요한 경우 Inno Setup을 사용하여 빌드 할 수 있습니다. 그냥 InitializeSetup event function에서 배치 파일을 실행하고 나중에 "설치"를 중단하십시오. 결과로 .exe에는 GUI가 없습니다.

[Setup] 
AppName=My Program 
AppVersion=1.5 
; Mandatory directive, but not actually used in this "installer" 
DefaultDirName={pf}\My Program 

#define SetupBatchFile "setup.bat" 

[Files] 
; Embed the batch file to the installer 
Source: "{#SetupBatchFile}"; Flags: dontcopy 

[Code] 

function InitializeSetup(): Boolean; 
var 
    BatchPath: string; 
    ResultCode: Integer; 
begin 
    { Extract the batch file } 
    ExtractTemporaryFile('{#SetupBatchFile}'); 
    Log('Running batch file'); 
    BatchPath := ExpandConstant('{tmp}\{#SetupBatchFile}'); 
    if not Exec(BatchPath, '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then 
    begin 
    Log('Error running batch file'); 
    end 
    else 
    begin 
    Log(Format('Batch file finished with exit code %d', [ResultCode])); 
    end; 
    Log('Exiting'); 
    { Prevents the actual Inno Setup installer from running } 
    Result := False; 
end; 

배치 파일이 [Setup] 섹션이 지시문을 추가, 관리자 권한이 필요하지 않는 경우 :

PrivilegesRequired=lowest