web-dev-qa-db-ja.com

追加の外部ソフトウェアなしで.batを.exeに変換(SFXの作成)

これと同じ手順に従います ガイドBat to Exe Converter などの新しいソフトウェアをインストールせずに、batからexeに変換しようとしています。私がこの方法を使用している理由は、職場のすべてのマシンにすでに7Zipがインストールされており、それを使用できるためです。ただし、メインサーバーに存在しない外部ソフトウェアを使用してスクリプトを動作させ、会社。

次のTEST.batがあります。

ECHO This is a Test bat to exe
pause

およびconfig.txt

;!@Install@!UTF-8! 
RunProgram="TEST.bat" 
;!@InstallEnd@! 

次に、次のコマンドラインを(別の.batで)呼び出します。

COPY /B "%PathTo7Zip%\7zCon.sfx" + %Config% + %Source7ZFile% %OutputFile%

%PathTo7Zip%7zCon.sfxのディレクトリです%Config%config.txt上のファイル%Source7ZFile%は私の.7zアーカイブで、%OutputFile%は私の出力ですTEST.exeガイドの作者によると、私がそれを呼び出すときにおそらくバットファイルを実行するはずのファイル。ただし、TEST.exeを呼び出すと、.7zアーカイブが解凍され(これは想定されています)、実行せずに終了しますTEST.bat

しかし、著者は説明します:

結論:

結果のファイルはソースBATファイルとまったく同じように実行されますが、これは実行可能な変換への真のバッチではないことに注意することが重要です。結果のファイルはEXEですが、自己解凍インストーラーで使用することを目的としています。結果のEXEファイルを実行すると、プロセスは次のようになります:

  1. EXEファイルの内容が一時ディレクトリに抽出されます。
  2. スクリプトによって生成された設定ファイルが読み込まれます。
  3. EXEファイルに含まれるバッチファイルは、新しいコマンドウィンドウで実行されます。
  4. 終了すると、一時ファイルは削除されます。
11
Hadi Farah

これを参照してください。batファイルをサードパーティのツールなしで.exeに「変換」するにはどうすればよいですか?

元のスクリプトは、変換する.batファイルとターゲットの実行可能ファイルの2つの引数を受け入れます。

1つの引数を受け入れるように少し変更しました。変換する.batファイルだけです。

したがって、この場合は、このスクリプトbat2exeIEXP.batにバッチファイルをドラッグアンドドロップできます。バッチファイルと同じ名前のexeファイルに変換されます。

enter image description here

;@echo off
;Title Converting batch scripts to file.exe with iexpress
;Mode 75,3 & color 0A
;Rem Original Script https://github.com/npocmaka/batch.scripts/edit/master/hybrids/iexpress/bat2exeIEXP.bat
;echo(
;if "%~1" equ "" (
    ;echo  Usage : Drag and Drop your batch file over this script:"%~nx0"  
    ;Timeout /T 5 /nobreak>nul & Exit
;)
;set "target.exe=%__cd__%%~n1.exe"
;set "batch_file=%~f1"
;set "bat_name=%~nx1"
;set "bat_dir=%~dp1"
;Set "sed=%temp%\2exe.sed"
;echo              Please  wait a while ...  Creating "%~n1.exe" ...
;copy /y "%~f0" "%sed%" >nul
;(
    ;(echo()
    ;(echo(AppLaunched=cmd /c "%bat_name%")
    ;(echo(TargetName=%target.exe%)
    ;(echo(FILE0="%bat_name%")
    ;(echo([SourceFiles])
    ;(echo(SourceFiles0=%bat_dir%)
    ;(echo([SourceFiles0])
    ;(echo(%%FILE0%%=)
;)>>"%sed%"

;iexpress /n /q /m %sed%
;del /q /f "%sed%"
;exit /b 0

[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=0
HideExtractAnimation=1
UseLongFileName=1
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=N
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles

[Strings]
InstallPrompt=
DisplayLicense=
FinishMessage=
FriendlyName=-
PostInstallCmd=<None>
AdminQuietInstCmd=
32
Hackoo

.NETがインストールされているすべてのWindowsマシンには、%windir%\ Microsoft.NET\Framework(32ビットの場合)またはFramework64(64ビットの場合)にvbc.exe、csc.exe、およびjsc.exeと呼ばれるファイルが、 「v」で。

C#コンパイラに関するガイド:
https://docs.Microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/command-line-building-with-csc-exe

Visual Basicコンパイラに関するガイド:
https://docs.Microsoft.com/en-us/dotnet/visual-basic/reference/command-line-compiler/index
サンプルコマンド:
https://docs.Microsoft.com/en-us/dotnet/visual-basic/reference/command-line-compiler/sample-compilation-command-lines

Jscriptingガイド:
http://www.phpied.com/make-your-javascript-a-windows-exe/

@Itchyからcsc.exeを使用してバッチファイルをexeファイルにバンドルする簡単なウォークスルー:
サードパーティのツールなしで.batファイルを.exeに「変換」するにはどうすればよいですか?

同じフォルダーに、ngen.exeと呼ばれるファイルが見つかることもあります。これは、「アプリケーションが実行時にジャストインタイムのコンパイルプロセスを実行する必要がないようにネイティブコードを生成します」。
見る:
https://books.google.com.au/books?id=iZM1jyqiyakC&pg=PA453&lpg=PA453&dq=guide++vbc.exe&source=bl&ots=UB041mSfni&sig=ACfU3U0xtmS8X9p0eDKD-u6bt-u6bt-u6bt-u6bt-w X&ved = 2ahUKEwjshc6589_lAhXXXSsKHcTaBlUQ6AEwD3oECAYQAQ#v = onepage&q = guide%20%20vbc.exe&f = false

1
Zimba