igor_andreev drondo Цитата: такое нельзя, bat файл это обычный текстовый файл
conv2bat [more]
:: CONV2BAT.BAT - this batch converts HLL source or an
:: existing file (<40K) into equivalent batch code.
:: Required components... (assumed to be on the path)
:: for ASIC (asi): ASICC
:: for BASM (bas): BASM ASM FREELINK
:: for Moonrock (moo): MRC (plus asm/link in mrc.cfg)
:: for Tokiwa (tok): TBC
:: Compresses com with PKLITE, uses Dos6+ FC and FIND to
:: determine if compressed for comments. Disable below.
:: The temp variable must point to a writable directory.
:: This batch is designed to operate by drag-drop, from
:: Windows' right-click menus, or from a dos prompt.
:: Usage: CONV2BAT [path\]filename.ext
:: If extension is asi bas moo or tok then produces
:: filename.bat containing batch-encoded binary with
:: attached source, in addition to compiler output.
:: If ext not supported then encodes binary to batch.
:: Tested in Win95, should be dos and NT-tolerent except
:: for compression test (see comments) but maybe more.
:: This is free software and comes with no guarantee,
:: test thoroughly before distributing the output code.
:: Last major mod 12/08/01, last mod 1/03/02
:: (C) Copyright 2002 Terry Newton
:: EncBin encoder, DecBin decoder and Basm helpers
:: are public domain, use as you wish.
@echo off
if .%1==.Shell goto %1
if not .%1==. if exist %1 goto fileexists
echo Compiles HLL source and converts to batch
echo Usage: CONV2BAT [path\]filename.ext
echo Compiles .asi .bas .moo and .tok files
echo encodes other types directly to batch
goto end
:fileexists
:: shell with lots of environment space
%comspec% /e:30000 /c %0 Shell %1
goto end
:Shell
::**** options, edit as needed...
:: usepklite=yes to compress with pklite
set usepklite=yes
:: usetempdir=yes to use temp dir in output code
set usetempdir=no
:: decname=filename used for decoder
set decname=_d.com
:: tempname=filename used for temp file
set tempname=_t.tmp
:: extension to output batch code to
set outputext=bat
:: callconv2cfg=yes to put variables in conv2cfg.bat
set callconv2cfg=no
:: temp filenames...
set dec=%temp%.\_decbin.com
set enc=%temp%.\_encbin.com
set file2bat=%temp%.\_2bat.com
set cmntsrc=%temp%.\_cmntsrc.com
set sepname=%temp%.\_sepname.com
set replace=%temp%.\_replace.com
set tf=%temp%.\_tf.tmp
set tf1=%temp%.\_tf1.tmp
set tf2=%temp%.\_tf2.tmp
:: override variables if configured...
if .%callconv2cfg%==.yes call conv2cfg.bat
:: double check...
set xyz=0123456789012345678901234567890123456789
if not .%xyz%==.0123456789012345678901234567890123456789 goto end
set xyz=
echo.
echo **** CONV2BAT **** 12/8/01 WTN
echo Checking file support...
::-----------------------
:: CM3-encoded DecBin decoder...
ECHO:`h}aXP5y`P]4nP_XW(F4(F6(F=(FF)FH(FL(Fe(FR0FTs*}`A?+,>%dec%
ECHO:fkOU):G*@Crv,*t$HU[rlf~#IubfRfXf(V#fj}fX4{PY$@fPfZsZ$:NvN$>>%dec%
ECHO:9AyroNB-)dOKwK0rRkfTbi)ws_~[[q9wE'sqlu1sY*Bsfe=@ziNS1a)88e>>%dec%
ECHO:f9RTL)9Z{3INBD?o6@MDLO{Zz4Q23E-'09NX9@Vz(42A7c8zMS:u$w6k5Q>>%dec%
ECHO:N,h:le)~gF?tutTyxoe5UiIdtn';0rJ1q:{7;lAl']y:yTjZBbOo?QRIdN>>%dec%
ECHO:$Bp@P/nAp_r0*4f'XcF4q3o?$_t5lx$Q-OxSfUNQ__Gd~$Q-Oxgkx=LGHU>>%dec%
ECHO:S)$C6P8#>>%dec%
::---- EncBin-encoded binary ----
:: sepname.com made with BASM ASM FREELINK
ECHO:AEPPr64U2y00tD61O0AAj7CDXn28A5S5D7JeRkl5Ll00xG47uvgmv5gl[5>%tf%
ECHO:gGC0v]U[2uY7213301EBu1Je13dnJDrX5OIZO5QZO5ibr1Vbj3AxS5Ayv6>>%tf%
ECHO:Zb02ibf3Axv6Rbf2RbC2Ayv6Jbf3abb3Axv62yK6ebr12rK6ZbC2ib42Ay>>%tf%
ECHO:v6ab[3Axv6Eyj5Rb42Dn3e0J]xN53b8l3b6l3bB\2jG0gC7DB7n6j50037>>%tf%
ECHO:v6j5000mF0cdr5ilW6tfC106Ld2ZNH37C6n5003yC6n5EXn5Ou3Hr5S3Fe>>%tf%
ECHO:IGebC3Axv6EXn56u00qbC3ybb1EyG7qb83ExG7Myn5ebb1Dn3e07]XNJ2Z>>%tf%
ECHO:ND2xT32yNN3b6M1nf3r76GeJC5eFf5thpXj5Ou3Fv5S3Ve2GR73F0500Rb>>%tf%
ECHO:r2]xn5Iy[7Vb81ebn2Axv6Myr7ib41ubj2hxn5QyC8yb01t3FF451yf3s6>>%tf%
ECHO:EGF0O33FK53yFyeTW5tfv2vpNT1bRl3b933b4Z2yV\3bAX0mF006NH0ev6>>%tf%
ECHO:j5pZn5abW2RyFTW5RlW6rrW2r0v1fpW8sxC2WxND01Dy3e1I]XND2ZNT3b>>%tf%
ECHO:9Z3ynpn59bv6ebv1ebn0Iy[7ZbK20mlZLd2xV\3b2N03b6O5pZn50mj3n6>>%tf%
ECHO:n5Oe3DC5eTW5rhv2vpNT1bV\3b7T3b2\2yV\3b8Z1bNV3b8s1bUK3b8m1b>>%tf%
ECHO:LR3b8g1bNd3b8a1bV\3b8X1bLR3b8R1bNo3b8L1bWp3b8F1bLR3b892n9C>>%tf%
ECHO:F07DAn83Fy3D4me0Z23xlZLI2Au6y0IZK5i3WMLI3x7AcKb5Zjuxlnn2jG>>%tf%
ECHO:m3xfdd30coy3PHLNtBvla0iymyylUhyHg9Z1sVLP73LNPMLNXUuXiyZOXU>>%tf%
ECHO:uRiyZ8s1LVf3yvRmA[DPlxPG2yNy3byRy3TGLMmvdhHo0AN0VrwULOi3Zr>>%tf%
ECHO:6sK0ivZqlfD1Pl0vwQS20ftdBYy3ebaygGZ8]3v0gxEBOUK5IXK5tBDIr5>>%tf%
ECHO:46w8I33y1yC2Fy2tK0Bqr37rqa2r2j2ElnnFjGSv1nW5f0trZ0Jvb]p857>>%tf%
ECHO:ZYv7WVK186K5y3hXW6s3uyhXW6ryr0gGv6hXW6rnuyhXW6r1C0lyQX3bva>>%tf%
ECHO:xxQX2yPG3bvUxxPG3bvWxyPG2BF83rpA603u9yCBF0M819DFZsn0Vhy3hX>>%tf%
ECHO:W6uruxhXC6F9l0CWTo16D1ZsLHVn6sK02yK6Fvv]E[m786K5013yG6K5t3>>%tf%
ECHO:DKb55ov4vELK2tLO2nn9jXtB5Ib5ZJexlBGUK5EAyxFEFRAn3DCGkLlBtB>>%tf%
ECHO:Hp2yPG2BPE3vRmA[0ml8n5N2041LlBt3Bf0ma0X6ixXpW4t8ix9606I9s6>>%tf%
ECHO:vw001wW6f1[0X6yxgGO6j5f0Xpv4gGC61puxIs1H0esEyvRmA[0ml8f5Z\>>%tf%
ECHO:9Tj4v0iyC5F0M933xxv5mbFxF3LGmbuyyvgGW6K3ujHPRmA[N600N3MBif>>%tf%
ECHO:XpW4r\ixZ86u00QBK42nJDnXN202014000070DGA8D0A07000000000000>>%tf%
ECHO:0000000000000000000000000000000000000000000000000000000000>>%tf%
ECHO:0000000000000000000000000000000000000000000000000000000000>>%tf%
ECHO:00000000whOW5jPl1g0000000000j0K00h000000001mH\SW1]TXXnOwC0>>%tf%
ECHO:T\1n9]5YPmo\C0LmPnOWP\HrSwn0}>>%tf%
:: BASM source...
:: rem separate specified name into fpath,fbase,fext
:: rem outputs sets to stdout
:: $com
:: a$=command$:a$=trim$(a$):a$=lcase$(a$)
:: if a$="" then
:: print "no parm":end
:: endif
:: rem loop through string, mark last \ and .
:: slash=0:dot=0:ilen=len(a$)
:: for i=1 to ilen
:: c$=mid$(a$,i,1):if c$="\" then slash=i
:: if c$="." then dot=i
:: next i
:: rem not an extension if \ after .
:: if slash>dot then dot=0
:: fpath$="":fbase$=a$:fext$=""
:: if dot>1 then
:: d=dot-1:fbase$=left$(a$,d)
:: d=ilen-dot:fext$=right$(a$,d)
:: endif
:: if slash>1 then
:: rem includes trailing \
:: d=slash:fpath$=left$(a$,d)
:: d=len(fbase$):d=d-slash
:: fbase$=right$(fbase$,d)
:: endif
:: output "set fpath=";fpath$
:: output "set fbase=";fbase$
:: output "set fext=";fext$
::-------------------------------
:: decode and use _sepname.com to parse input (in %2)
%dec% < %tf% > %sepname%
if errorlevel 1 goto binerror
%sepname% %2 > %temp%.\_sep_tmp.bat
call %temp%.\_sep_tmp.bat
del %temp%.\_sep_tmp.bat
if .%fpath%==. goto incurrent
:: change to source directory
%fpath%
cd %fpath%
:incurrent
if exist %fbase%.%fext% goto curdirok
echo Could not change to directory
goto cleanup
:curdirok
:: *******
:: ******* compiler support, edit as needed
:: *******
if .%fext%==.asi goto asifile
if .%fext%==.bas goto basfile
if .%fext%==.moo goto moofile
if .%fext%==.tok goto tokfile
echo Unknown filetype, encoding as-is
set compname=
set madewith=????
set binfile=%fbase%.%fext%
goto conv2batch
:asifile
set compname=ASIC
set madewith=ASICC
if exist %fbase%.com del %fbase%.com
call asicc %fbase%.asi C
goto checkcom
:basfile
set compname=BASM
set madewith=BASM ASM FREELINK
if exist %fbase%.com del %fbase%.com
call basm %fbase%.bas
if exist %fbase%.asm call asm %fbase%.asm ;
if exist %fbase%.obj call freelink /c %fbase%.obj
goto checkcom
:moofile
set compname=Moonrock
set madewith=MRC ASM MRLINK
if exist %fbase%.com del %fbase%.com
call mrc %fbase%.moo
goto checkcom
:tokfile
set compname=Tokiwa
set madewith=TBC
if exist %fbase%.com del %fbase%.com
call tbc /c %fbase%.tok
goto checkcom
:: ******* end compiler commands
:checkcom
set binfile=%fbase%.com
if exist %binfile% goto comexists
echo.
echo =======================================
echo Compile failed, debug and try again
echo =======================================
echo.
goto cleanup
:comexists
if exist %fbase%.obj del %fbase%.obj
:: try to pklite it (if option enabled)
if not .%usepklite%==.yes goto conv2batch
copy %binfile% %tf1% >nul
call pklite %binfile%
fc /b %binfile% %tf1% > %tf2%
find "00" < %tf2% > nul
::reset var for docs if not changed by pklite...
::note--not NT compatible here, PkLite status won't
::be properly indicated in the output batch comments
if errorlevel 1 set usepklite=no
del %tf1%
del %tf2%
:conv2batch
echo.
echo Converting to batch code...
::---------------------
:: the EncBin encoder, encodes stdin to stdout, encoded by itself...
ECHO:AALIxnCmeRf0\Uf0pWjXYBlxr0MyG02u022nc1Z5Z0r4G2ldMAj[8F34dd>%tf%
ECHO:Z1Z0r4G2ld6Aj[8F34Ed3EmbG02lJpNl0jjjCt9v0407ZvjtS3I0j7rvLv>>%tf%
ECHO:G203l0wUDv20F42eD3ZujTS6fmprbD2e4uwp39gwYdfDfAdng0f1f0ZF2t>>%tf%
ECHO:04bemDCXj0C0LHtA2701ZsG0SFdfW]6630Jf36S6W1f0rJ2fMfQYW1YAoO>>%tf%
ECHO:EAt0y[36S6W1[8LRi3}>>%tf%
::---------------------
:: decode encoder...
%dec% < %tf% > %enc%
if errorlevel 1 goto binerror
::---- EncBin-encoded binary ----
:: 2bat.com made with BASM ASM FREELINK
ECHO:AFDJr64U2y00tD61O0AAj7CDXn28p5j5D7JeRkl5ND00xG47uviEv5iD[5>%tf%
ECHO:gGC0v]U[2ues213301EBu1Je13dnJDrX5OhZf5pZf5JbC2qb04pxj56yb8>>%tf%
ECHO:ybC27b046xb8ubv2qbO26yb8ebv3ybr36xb8qbf2ibK26yb8Zbr36xb8ty>>%tf%
ECHO:46RbK2Do3c7j0mF0e5v5hXr8fYW6sQC206N52ZO[23Gx86v0S37cn13bf3>>%tf%
ECHO:RyC[W6QXW8s7W3rOv2fPW9t\W3tQr3fPW9sbW2r6v2fPW9tJC3F0MZj56x>>%tf%
ECHO:b8Fbj1O335C5b]C6F0O30]f686O[2ZO]3bDc3yOp865bb8Zb437bn16y[9>>%tf%
ECHO:ubK30mlZN52y]H2xOY3b7U03K6j5IZ86t3C[061y[3sLW1rnv3vpO[1b]H>>%tf%
ECHO:3bBB3b6S2yb93bCc3bCU2xb93b7f3b6A2yb93bCN0mF0e5r5hHW9s7C106>>%tf%
ECHO:N52ZO]0mF006O]0eG686QZ86qbr2RyC]W6QHW9tSW2sLv1hHW9uYb2fPf9>>%tf%
ECHO:fbW6ubC2WxMs00Dn3c3\2tb92rOd3bB]23[xf5G0S3Bcn0R70f0600ibb2>>%tf%
ECHO:tx866yWAqbn0t3Cf061n[3tYO0j6YX006GbbW6tkr1fsv6hXW8tx40e3C5>>%tf%
ECHO:bfC6WxOf00Dn3e1u]xOj3b2j2B78bdf6ZO2tC62nJDWXuer0hXW8tPf0Z8>>%tf%
ECHO:dX86YBptYX2no0jXJbn06xWABbW0YBlXOd2BeOh1GAg07DBb2w2x]H3b1e>>%tf%
ECHO:2B78bdf6ZO6t[92nJDWXt]40bdf6ZOAs00xtb52nJDWXtKW0r2r2fpv6h1>>%tf%
ECHO:WArnf0r4hGr4]GsEiyWUOd3b7r2BWU867bv1lnGlq0jXEn0lqyjG0mlAu2>>%tf%
ECHO:y0]Zb5QAmxF0deC5mvdfbAN0Vt73LMgNZx0llsyyyvuleqaHIBy1LUDPkH>>%tf%
ECHO:PNLMsNNbyXxBuONbyRxB78HUDV3uFvv]][N36xf7]yC7ibqy33LNkMxfMh>>%tf%
ECHO:S40AkourLVDOkmC3dsW5y3XLtciyZOgMZq7bey2BoUtBsBVvMBmodBBAxh>>%tf%
ECHO:ko6BiHZBRmcnCB3sfevuVJVaee2GfexBi7Keq3N30mkRDTlyWc3bwXxxWc>>%tf%
ECHO:2yUk3bwOxxUk3bwQxyUk2BF83rpA603u9yCBF0M819DFZsn0Vhy3fcW8rl>>%tf%
ECHO:uyfcC8F9l0CWTo16D1ZsLrVnYsS06yf7Fvv]E[kWYBps3y2tOs2nnyjXol>>%tf%
ECHO:KBJ0TPDGLI8ULV2BpxMi2u022BihJvMBxfdBmlMhSQ6BpBFBx]gn03isBu>>%tf%
ECHO:Cuoqiar8hGBuXFye02asxBq6070VgQLOXl63B70eVtKeV7yOhPZ867pr81>>%tf%
ECHO:JDWXNe0Fabuuy7C6j5012BRQj740R3gLZfQBS46yf7tBG6Fvv]E[F0M81T>>%tf%
ECHO:J200gLZfl3r20ml9s6xBHp3bssveP610Q9Jx0w00Pw2r0129s6xyUk3605>>%tf%
ECHO:2BHp2yUk03spwEYsS0reJxFvv]E[F0M82Bq\N2042ySs0ma0W5u3fsW7rg>>%tf%
ECHO:FxlnnxjXabVxF3KmF0e3G5fw7DBbsewRU9331IKma9WEN32nnvjXZbNx\R>>%tf%
ECHO:W7YBpnnxjXmbJx1Qf1pnFDWXs2Fxj14000070DGA8D0A07000000000000>>%tf%
ECHO:0000000000000000000000000000000000000000000000000000000000>>%tf%
ECHO:0000000000000000000000000000000000000000000000000000000000>>%tf%
ECHO:00000000000000000W000000000000000x15X3HF0t0x0x0g}>>%tf%
:: BASM source...
:: '2bat infile outfile tmpfile
:: 'reads infile, surrounds each line with
:: '"ECHO:" and ">>tmpfile" (one > 1st line)
:: 'and outputs results to outfile
:: $com
:: $string 120
:: a$=command$:a$=ltrim$(a$):a$=rtrim$(a$)
:: if a$<>"" then
:: b=instr(a$," ")
:: if b>0 then
:: infile$=left$(a$,b)
:: infile$=rtrim$(infile$)
:: c=len(a$):c=c-b
:: tmpfile$=right$(a$,c)
:: b=instr(tmpfile$," ")
:: if b>0 then
:: outfile$=left$(tmpfile$,b)
:: outfile$=rtrim$(outfile$)
:: c=len(tmpfile$):c=c-b
:: tmpfile$=right$(tmpfile$,c)
:: open infile$ for input as 1
:: if err=0 then
:: open outfile$ for output as 2
:: if err=0 then
:: done=0:b$=">"
:: while done=0
:: line input #1,a$:done=eof
:: if done=0 then
:: print #2,"ECHO:",a$,b$,tmpfile$
:: b$=">>"
:: end if
:: wend
:: close 2
:: close 1
:: end if
:: end if
:: end if
:: end if
:: end if
::-------------------------------
:: decode 2bat utility...
%dec% < %tf% > %file2bat%
if errorlevel 1 goto binerror
::---- EncBin-encoded binary ----
:: cmntsrc.com made with BASM ASM FREELINK
ECHO:ADLNr64U2y00tD61O0AAj7CDXn28h5G4D7JeRkl5HB00xG47uvgCv4gB[4>%tf%
ECHO:gGC0v]U[2uS1213301EBu1Je13dnJDrX5O]ZC4hZC4ybb0Zb[2hxG42yf6>>%tf%
ECHO:mbj0mbW22xf6ebO1ebv02yf6NbW22xf6ly[4Nbv0Dn3e0J]xIU3b413b2H>>%tf%
ECHO:3b8j2jG0gC7DAtQj2uI]3b9e2XGq2ZIb23Wxb4v0S3Fe6Gdxb4Rbn0RbO0>>%tf%
ECHO:Nb022j2noCjXR62j062GQXb4VbS1pxf42yf6ebK06XG4YZb4t3Eb041nf3>>%tf%
ECHO:rLYGQsW4riW2QjW6rcW2OjW4rZf2u7tB6]W4r1G2gC0lmDGXf3vlyDCGF0>>%tf%
ECHO:AAmxF0bab4Z63xlZGc33QB4ar4yA]X842AyxJEf23D73mvdd0AkoFtkHTM>>%tf%
ECHO:MBBxF0xsyyBvxh7qo96BkV\UN3THLMTMLU7buyYBoUibqyYBk1wUK3muym>>%tf%
ECHO:G]cPu3fEv6hwW5uRFykGPNNvtfcob430XowUXVN3Dm2ZGq3rZ3td3yMBF8>>%tf%
ECHO:Zsr0SutB4e44bcf4WxGa0UW6HFx3v09y0meygGS0yYW3yHZaf0tjZ0xn3D>>%tf%
ECHO:jGC7Ln2rW0hEm0x[W]WT97urv75OO10aC4lyPV3bwJxxPV3b0y2xOE2yPV>>%tf%
ECHO:3bw4xxPV3b0133xyK6VbFyxxK6ty06ubBytx063bFyty06YBj3erWTh0vW>>%tf%
ECHO:gy0mZ0W5w9I33s1wFhlyPV3bv8xxPV0m39WvKWS756I37sLoangHv0fEj6>>%tf%
ECHO:ymG]e3gWZOxsv0ptf4xnFD8XTT0Bkn1PLJsI5IgVZGpx84Au00tBsBivZo>>%tf%
ECHO:hfZAulcofQZHhBmmI]SB[3veiuFJTque08[eyuJrBe2GisZVV600bVLR9O>>%tf%
ECHO:SOU3j2bewNSemqaO]BV8ZH6r127D9Oye2G7bqxR7114400dBq6071XV3j6>>%tf%
ECHO:Ga01v0v6Gc23[x84KQS4uy0cb4fgG4f97DABSU84EAqxiAWUGc2AumyEfm>>%tf%
ECHO:pnn2jGy3hwC5F0M933pxf5ybBxJ3fx7DBbsuy3DJF06ZG4pnFDWXsgixM9>>%tf%
ECHO:C7kLlBtBHp3brKxBi8f1f0XMG4g07D9TB2000101S000bD0[bD00070000>>%tf%
ECHO:0000000000000000000000000000000000000000000000000000000000>>%tf%
ECHO:0000000000000000000000000000000000000000000000000000000000>>%tf%
ECHO:000000000000000000001h1i9j9XTg0000001]kcP\rWPi1n9]LiTh1[0t>>%tf%
ECHO:0t80jt}>>%tf%
:: BASM source...
:: rem open file specified on command line and write
:: rem to stdout with ":: " prefixed to each line
:: $com
:: a$=command$:a$=trim$(a$)
:: if a$="" then
:: print "no parm":end
:: endif
:: open a$ for input as 1:e=err
:: if e>0 then
:: print "file not found":end
:: endif
:: fileloop:
:: line input #1,a$:e=eof
:: if e=0 then
:: output ":: ";a$:goto fileloop:
:: endif
:: close 1
::-------------------------------
:: decode cmntsrc utility...
%dec% < %tf% > %cmntsrc%
if errorlevel 1 goto binerror
::---- EncBin-encoded binary ----
:: replace.com made with BASM ASM FREELINK
ECHO:AGINr64U2y00tD61O0AAj7CDXn28Q587D7JeRkl5S]00xG47uvfav7f][7>%tf%
ECHO:gGC0v]U[2uMDA13301EBu1Je13dnJDrX5OYZ47dZ47Fbv2ibO5pyW9dr00>>%tf%
ECHO:M90maRXTW1s3v3hDWJs[W5sIv5hDW9fD[0W5fmp95T3bCd2yMD7bLB3bKs>>%tf%
ECHO:2y]D2r0Y29C5FRp9K17b43pyWNBbC53b85Qx87pyWPNbj2Jb45pxWPabK4>>%tf%
ECHO:Fbv2pyWPJb45Bb05pxWPZb447br2pyWPBb053bv45d1b]D7bI93bBD2yhD>>%tf%
ECHO:7bJh2xhD6yUD7bB81of3r4]Gr7C2F0tZ47pxWPabS2O30UC7cqv7vETq3b>>%tf%
ECHO:Io3ySpS7obWPJbO43b[2pyWP7bf40mlZSU2y]D6xUD7bC]03r647]ZS7t3>>%tf%
ECHO:Ds871vf3r1xGvETs3bHv3y[pS7obWPFb44VbK2pyWTZbS4Q31s870mF0bU>>%tf%
ECHO:r7hDWPrFC206SU2ZTq0mF006Tq0e[6S7hZS7BbG4RyDuW7QDWPukW3rTv2>>%tf%
ECHO:hDWVrxW4rfr4hDWVskW3rBv2hDWVrfW4rQb4O1obWVFbf3Vbv1pyWRZb44>>%tf%
ECHO:pxWRpyWNBbv1Do3e04ac4k3bFo1dW1QDWVt]W3uIv1hDWRumr3hDvRhDWN>>%tf%
ECHO:uDK1S3Je2Gmc010mlZSU2xxD7b5x03r647UZS7t3Dq871vf3r4]GugC0Wx>>%tf%
ECHO:Tq02Dy3e0raySES7Fbb3RyDqW7QDWVsIW3sxv1hDWVtVv3vETq3bE93ySp>>%tf%
ECHO:S7obWV3b83JbO1pyWVNbW3qe2G3bS3pxS7pyWVNb41JbO3xxS7pyWXab01>>%tf%
ECHO:R7210700BbK3ubS3JbC1pyWZNbK3pxWZEyW7yb81Dn3e04ae1S]xEDAyMD>>%tf%
ECHO:7b4U1nf3r3hGuGpxWZpyWJub01Dn3e0Oab1V3bCH2xU52y6DBb2p3746W7>>%tf%
ECHO:003e6eWxU100j2S3ee6GBbv2pxWXJbv2pxWZubr2pyWXybr2Ry21f7t5t3>>%tf%
ECHO:E1071yf3r4YGrO00f0lnJDrXh7W7tHW1sQW0rc02f0lnJDrXhDvThDWBsQ>>%tf%
ECHO:r0hDvVhDWDsHr0hDvXhDWFs8W0tPr0hDv7hDWXrvW0QDWXtUW2OFW7tOC2>>%tf%
ECHO:ln9CF07DAn83Fy3D4me0Z23xlZS62Au6y0YZ07i3WMS63x7Ab8b7Zjuxln>>%tf%
ECHO:n2jGm3xfdd30coy3PHLNtBvla0iymyylUhyHg9Z1sVLP73LNPMLNXUuXiy>>%tf%
ECHO:ZOXUuRiyZ8s1LVf3yvRmA[DPlx]D2yUD3byRy3TGLMmvdhHo0AN0VrwULO>>%tf%
ECHO:N3MBFfZfv6hDOHj5v0hDO7j5r0hDWFtSayX6uxhDWBtJayX6FvF0Q9JtRy>>%tf%
ECHO:JtQBJtOuJxXyMxxD2y]D03cpwEtBJvFvv]E[F0M82x]D2y6D7bwQxx6D6y>>%tf%
ECHO:hD3bxLworLhDvDhDW7s[iyX67v16ytwEitrPtGhDvFhDC91putIs013vRm>>%tf%
ECHO:A[0ml8W5sSiytTMBsTN3NbvWxBROMBZqrOiyZGgUZhkBwNMBxfdBmlMhSS>>%tf%
ECHO:6BpBFBx]gn03isBuCuoqiarAhGBuUBkRCekTF3F0oRN3FbuxgGZ8]3v0gx>>%tf%
ECHO:EBbU07YX07tBC6r746w8I33y1yC2Fy2tK0Bqr37rqa2r2j2ElnnFjGSv1n>>%tf%
ECHO:W5f0trZ0Jvb]p857ZYv7WVK1O607y3hDWBtCuxhDvBhDW9t3uxhDW9t5yx>>%tf%
ECHO:hDf9Z8W3xA0TZuvWSB0ml8[5HF]3v0swu3pyWBqbNxpxWB[ml00v9oO8H1>>%tf%
ECHO:]1v0K2Vm2s02pyW9Fvv]E[m7O607013yW607t3C8b75ov4vES82tSC2nn9>>%tf%
ECHO:jXtB46b7ZJexlBWU07EAyxFEFRAn3DCGkLlBtBHp2y]D2BPE3vRmA[0ml8>>%tf%
ECHO:n5N2041LlBt3Bf0ma0X6ixXpW4ufiw9606I9s6vw001wW6f1[0X6yxhDO9>>%tf%
ECHO:j5f0Xpv4hDC91puxIs800esEyvRmA[0ml8f5Z\9Tj4v0hDC7F0M933pyW7>>%tf%
ECHO:ubiwu3hDW7tPFwkLlBtBHp3bpNxBi8f1f0XMG4g07D9TB200gLZfR62D09>>%tf%
ECHO:2GQn2lqyjX\n2Y]D36r6W900]Bq\N30101S000bD0[bD00070000000000>>%tf%
ECHO:0000000000000000000000000000000000000000000000000000000000>>%tf%
ECHO:0000000000000000000000000000000000000000000000000000000000>>%tf%
ECHO:00000000000000000000000000009\Tl9iS08j}>>%tf%
:: BASM source...
:: 'typical usage: type file | _replace "abc" "def" > newfile
:: 'replace all occurences of string "abc" with string "def"
:: 'read from standard input, write to standard output
:: $com
:: $string 512 'max line len
:: chr10$=chr$(10)
:: chr13$=chr$(13)
:: quote$=chr$(34)
:: 'parse command line...
:: c$=command$
:: c$=ltrim$(c$) 'get rid of surrounding spaces
:: c$=rtrim$(c$)
:: d$=left$(c$,1)
:: if d$<>quote$ then goto clerror
:: clen=len(c$)
:: clen=clen-1
:: c$=right$(c$,clen) 'remove 1st quote
:: qpos=instr(c$,quote$) 'get position of 2nd quote
:: if qpos<2 goto clerror 'must be at least 1 char
:: qpos=qpos-1
:: str1$=left$(c$,qpos) 'slice off match string
:: qpos=qpos+2
:: clen=len(c$)
:: rlen=clen-qpos
:: str2$=right$(c$,rlen) 'raw second half
:: str2$=ltrim$(str2$) 'no extra spaces
:: d$=left$(str2$,1) 'check for quotes
:: if d$<>quote$ then goto clerror
:: d$=right$(str2$,1)
:: if d$<>quote$ then goto clerror
:: clen=len(str2$) 'make sure valid string
:: if clen<2 then goto clerror 'too short
:: if clen>2 then 'at least 1 char
:: clen=clen-1
:: str2$=right$(str2$,clen) 'remove quotes
:: clen=clen-1
:: str2$=left$(str2$,clen)
:: else
:: str2$="" 'otherwise empty replace
:: end if
:: oneline$="" 'initialise main processing loop
:: linelen=0 'count chars to avoid overrun
:: mainloop: 'loop until no more...
:: a$=stdin$ 'get one character
:: if a$="" then goto nomore 'done with input
:: if a$=chr13$ then goto mainloop 'skip cr
:: if a$=chr10$ then 'if lf process line
:: gosub process 'replace and output
:: oneline$="" 'reset string
:: linelen=0
:: goto mainloop 'and loop for more
:: end if 'if not lf
:: if linelen<512 then 'if not overflow
:: oneline$=oneline$+a$ 'add to line
:: linelen=linelen+1 'bump length count
:: end if
:: goto mainloop
:: nomore:
:: if linelen>0 then 'if extra chars w/ no crlf
:: gosub process 'process as one line
:: endif
:: end 'exit to dos
:: clerror: 'command line error
:: print "error"
:: end
:: process: 'subroutine...
:: replace str1$ with str2$ in oneline$ 'nice
:: output oneline$ 'write to stdout+crlf
:: return
::-------------------------------
:: decode replace helper...
%dec% < %tf% > %replace%
if errorlevel 1 goto binerror
:: everything is in place to convert com into batch code...
:: %dec% - the decoder program
:: %enc% - encodes binary to text, stdin to stdout
:: %file2bat% infile outfile tmpfile - turns into echo code
:: %cmntsrc% file - outputs stdout with commented file
:: %replace% "search" "replace" - stdin to stdout
:: %compname% = the compiler name
:: %madewith% = utilities used to compile
:: %usetempdir% = yes if tempdir to be used
:: %decname% = decoder filename to use
:: %tempname% = temp filename to use
:: %fbase%.%outputext% = output filename
:: determine temp names...
set t=
if .%usetempdir%==.yes set t=%%temp%%.\
:: create output file...
set outfile=%fbase%.%outputext%
echo @echo off>%outfile%
echo>>%outfile% ::---- Generated by CONV2BAT ----
:: attach decoder...
echo>>%outfile% :: CM3-encoded DecBin decoder...
%file2bat% %dec% %tf1% %t%%decname%
type>>%outfile% %tf1%
:: attach encoded com file...
echo>>%outfile% ::---- EncBin-encoded binary ----
echo>>%outfile% :: %binfile% made with %madewith%
%enc% < %binfile% > %tf%
%file2bat% %tf% %tf1% %t%%tempname%
type>>%outfile% %tf1%
:: attach source code...
if not .%compname%==. echo>>%outfile% :: %compname% source...
if not .%compname%==. %cmntsrc% %fbase%.%fext% >>%outfile%
echo>>%outfile% ::-------------------------------
:: attach decode/run/delete lines...
echo>>%outfile% :: decode/run/delete, modify as needed...
echo>%tf1% %t%%decname% {{.lt{{ %t%%tempname% }}.gt}} %t%%binfile%
%replace% "{{.lt{{" "<" < %tf1% > %tf2%
%replace% "}}.gt}}" ">" < %tf2% >>%outfile%
if not .%compname%==. echo>>%outfile% %t%%binfile% %%1 %%2 %%3
if not .%compname%==. echo>>%outfile% del %t%%binfile%
if .%compname%==. echo>>%outfile% :: use %t%%binfile% as needed
echo>>%outfile% del %t%%tempname%
echo>>%outfile% del %t%%decname%
echo.
echo ===========================================================
echo Done! %binfile% is the raw binary
if exist %fbase%.asm echo intermediate assembly is in %fbase%.asm
echo %outfile% batch code recreates %binfile% when run
echo ===========================================================
echo.
goto cleanup
:binerror
echo Error in encoded binary
:cleanup
if exist %tf% del %tf%
if exist %tf1% del %tf1%
if exist %tf2% del %tf2%
if exist %enc% del %enc%
if exist %dec% del %dec%
if exist %replace% del %replace%
if exist %sepname% del %sepname%
if exist %cmntsrc% del %cmntsrc%
if exist %file2bat% del %file2bat%
:end
[/more]
Создает батник создания любого файла. Ограничение 40 Кб, легко обойти.