Board logo

标题: [其他] Hope Any to Bat,将任何文件插入至Bat中 [打印本页]

作者: HOPE2021    时间: 2021-8-9 16:29     标题: Hope Any to Bat,将任何文件插入至Bat中

本帖最后由 HOPE2021 于 2022-6-5 15:19 编辑

这个程序可以将任何文件插入进批处理脚本中,可以让您的批处理能在绝大多数Windows环境下自动解包复杂的文档。

注意
本程序最新版本使用的VBS内核并不成熟,
目前已在Windows XP/Windows Vista/Windows 10环境下进行测试,
打包程序只有在Windows 10中才能正常运行,
不过打包后的自解压脚本可以在Windows XP/Windows Vista/Windows 10中运行。
恳请您的改进。

声明
本程序允许在保留原作者及所有改进者名单的情况下,由任何个人和团体二次发行。

更新日志
        ·Version Version 1.0.0000 09/08/2021
        ·Version 1.0.0001[未发布] 19/08/2021
                首次尝试VBS内核,兼容性极差
        ·Version Version 1.0.0002 05/06/2022
                重新设计VBS内核,速度增强,
                更改了界面。
                未解决兼容性问题,打包程序目前只在 Windows 10 测试正常。
作者: slimay    时间: 2021-8-9 17:48

好样的, 没了Certutil, 看你怎么办,关键时刻还得用bse,不仅仅是嵌入exe, 可压缩嵌入各种文件
作者: HOPE2021    时间: 2021-8-9 17:57

本帖最后由 HOPE2021 于 2021-8-9 18:01 编辑

回复 2# slimay


请看兼容性声明:
echo.    兼容性声明:
echo.    Windows 7 x64
echo.    Windows 8.x x64
echo.    Windows 10.x x64

不过,谢谢您的提醒,我正在查阅关于使用vbs进行base64加密的方法。
作者: cmd1152    时间: 2021-8-10 14:41

我也有Bat转Exe程序,可以嵌入文件夹等任何文件
作者: HOPE2021    时间: 2021-8-10 16:32

是的,我从您这里下载了bat转exe程序。谢谢。
作者: locoman    时间: 2021-8-21 16:17

回复 1# HOPE2021

谢谢楼主的无私分享,收藏学习!
好东西需要作者详解其功能和用法及其示例,方能不辜负作者初心!!
想向楼主进一步请教详解,对您这个东东我的理解是不是对的:

比如:
我有一个abc.exe文件,拖入其中之后,确实自动生成了一个Exe-Com2Bat.bat文件和我定义的test001.bat文件。

1.  原先那个abc.exe文件可以不用了,直接删除了也可以吗??
2.  Exe-Com2Bat.bat文件和我定义的test001.bat文件,究竟哪个才是我最终需要的文件呢??(我把Exe-Com2Bat.bat文件也删除了,直接使用test001.bat文件也可以看见原先abc.exe的执行结果)。
3.  如果,原先的那个abc.exe文件是可以用命令行执行并且可以带参数执行的,那么,我用您这个时,最终就需要abc.exe  /stext abclist.txt这样自动执行,怎么办呢??更进一步,将来abclist.txt这个文件名需要动态更换,又怎么办呢??


谢谢您详解,祝福您更上一层楼!有更多的成果更多的收获!!

作者: HOPE2021    时间: 2021-8-21 16:49

本帖最后由 HOPE2021 于 2021-8-21 17:10 编辑

回复 6# locoman
1.Exe-Com2Bat.Bat只是一个安装程序,如果您想删除abc.exe,请新建一个空文件夹,在此空文件夹里运行Exe-Com2Bat.Bat,再验证释放出来的abc.exe是否能正常运行,如果可以正常运行,那么abc.exe就可以删除.
2.因为Exe-Com2Bat.Bat是安装程序,如果它运行成功,那么您可以把它稍作改进,把%0改为goto,以达到内嵌abc.exe的目的.
3.除非是某些特殊文件格式(目前已知.Zip,.Dll,.Db),Exe-Com2Bat是不会损伤文件的,您可以将Exe-Com2Bat.BAt中的代码内嵌至批处理文件中,如果您要动态替换文件名,您可以:
  1. Set /p FileName=
  2. abc.exe  /stext "%FileName%"
复制代码
所以,您可以使用类似以下的格式进行内嵌式第三方程序的使用:
  1. @echo off
  2. @Goto :Begin
  3. :Begin
  4. Call :abc_Installs
  5. Set /p FileName=
  6. abc.exe  /stext "%FileName%"
  7. [您的代码]
  8. :abc_Installs
  9. (
  10. echo.[Base64码]
  11. ) > abc.exe
  12. if exist abc.exe @Goto :eof
  13. if not exist abc.exe @Call :abc_Installs
  14. @Call :abc_Installs
复制代码
参考程序:
http://www.bathome.net/thread-59538-1-1.html
http://www.bathome.net/thread-59481-1-1.html[1.0.0038以前的版本]
谢谢
作者: cmd1152    时间: 2022-6-4 15:53

我以前的文件工程也有这个功能,但是因为有一个输出所有文件的BUG导致文件工程停止支持...
现在打开下载链接会有个警告
作者: HOPE2021    时间: 2022-6-4 15:59

回复 8# cmd1152
新版本将会更新为Any2Bat
而且内核更换为VBS,目前有一个小Bug为解决,ForFiles.Exe的嵌入包已经可以正常使用
Hope2021
作者: cmd1152    时间: 2022-6-4 16:25

回复 9# HOPE2021


    刚刚在写FCOEC(和你这个应该差不多),刚刚打错了,是因为文件工程有一个会删除当前目录所有文件的BUG
作者: cmd1152    时间: 2022-6-4 17:27

回复 3# HOPE2021


    删除VBScript Script
作者: cmd1152    时间: 2022-6-4 17:28

回复 7# HOPE2021


    所以你是氵怪!   <---刚从mcbbs矿工茶馆过来的
作者: HOPE2021    时间: 2022-6-5 14:14

1.0.0000版本
  1. @echo off
  2. Rem Exe-Com2Bat生成程序
  3. cls
  4. chcp 936 > nul
  5. Mode Con: Cols=80 Lines=25
  6. color 3f
  7. @goto :Start
  8. :Start
  9. if exist Exe-Com2Bat.Exe-Com2Bat del Exe-Com2Bat.Exe-Com2Bat
  10. set "File=/"
  11. cls
  12. echo.
  13. echo.
  14. echo.    Exe-Com2Bat 加密生成程序
  15. echo.
  16. echo.    By HOPE2021
  17. echo.
  18. echo.    此计算机程序用于将其他程序的生成程序嵌入至Bat中,即点即生成,稍加改动
  19. echo.    即可将第三方嵌入至Bat文件中,十分方便。
  20. echo.    本程序会将资源打包成Bat形式的安装包,存在当前目录下,命名为Exe-Com2Ba
  21. echo.    t.bat,请及时查收。
  22. echo.    Exe-Com2Bat.bat中的代码请勿随意编辑,否则很有可能生成木马。
  23. echo.
  24. echo.    注意:
  25. echo.    调用的系统资源有限,不建议您加密大小大于 1 Mb 的程序。
  26. echo.    无法为您加密 .dll 或 .db 文件,这些应用程序拓展您只能以其他程序加密。
  27. echo.    只能够加密 .exe 或 .com 文件
  28. echo.   
  29. echo.    兼容性声明:
  30. echo.    Windows 7 x64
  31. echo.    Windows 8.x x64
  32. echo.    Windows 10.x x64
  33. echo.
  34. set /p File=    ^>^> 请将要转换的Exe或Com文件拖入这里:
  35. set "File=%File:"=%"
  36. set File="%File%"
  37. if not exist %File% (
  38. echo.
  39. echo.    ^>^> 没有此文件...
  40. echo.
  41. echo.    ^>^> 请按回车键继续...
  42. pause > nul
  43. @goto :Start
  44. )
  45. set /p Filea=    ^>^> 请输入程序的名称(带有文件拓展名):
  46. set "Filea=%Filea:"=%"
  47. set Filea="%Filea%"
  48. echo.
  49. echo.    ^>^> 正在进行 Certutil 编码...
  50. Certutil -encode %File% "%cd%\Exe-Com2Bat.Exe-Com2Bat" > nul
  51. find /i "(" Exe-Com2Bat.Exe-Com2Bat > nul
  52. if not errorlevel 1 goto :Start_1
  53. find /i ")" Exe-Com2Bat.Exe-Com2Bat > nul
  54. if not errorlevel 1 goto :Start_1
  55. echo.@echo off > Exe-Com2Bat.bat
  56. echo.( >> Exe-Com2Bat.bat
  57. for /f "delims=" %%i in (Exe-Com2Bat.Exe-Com2Bat) do (
  58. echo.echo.%%i >> Exe-Com2Bat.bat
  59. )
  60. echo.) ^> %Filea% >> Exe-Com2Bat.bat
  61. echo.if not exist %Filea% %%0 >> Exe-Com2Bat.bat
  62. echo.Certutil -decode -f %Filea% %Filea% ^> nul >> Exe-Com2Bat.bat
  63. echo.if not exist %Filea% %%0 >> Exe-Com2Bat.bat
  64. echo.exit >> Exe-Com2Bat.bat
  65. start explorer "%cd%"
  66. %0
  67. :Start_1
  68. echo.@echo off > Exe-Com2Bat.bat
  69. echo.cd.^> %Filea% >> Exe-Com2Bat.bat
  70. for /f "delims=" %%i in (Exe-Com2Bat.Exe-Com2Bat) do (
  71. echo.echo.%%i ^>^> %Filea% >> Exe-Com2Bat.bat
  72. )
  73. echo.if not exist %Filea% %%0 >> Exe-Com2Bat.bat
  74. echo.Certutil -decode -f %Filea% %Filea% ^> nul >> Exe-Com2Bat.bat
  75. echo.if not exist %Filea% %%0 >> Exe-Com2Bat.bat
  76. echo.exit >> Exe-Com2Bat.bat
  77. start explorer "%cd%"
  78. %0
复制代码

作者: HOPE2021    时间: 2022-6-5 14:14

本帖最后由 HOPE2021 于 2022-6-5 15:15 编辑

1.0.0002上半部分
  1. @Mode Con: Cols=80 Lines=25 & @Color 3F & @Chcp 936 > Nul & Title Hope Any to Bat Version 1.0.0002 & @Echo Off
  2. @Goto :Begin
  3. :Begin
  4. Cd /D "%~dp0"
  5. @Call :LoadFunctions
  6. @Goto :Main
  7. :Main
  8. Cd /D "%~dp0"
  9. @Call :UserInteraction
  10. @Goto :Main
  11. :UserInteraction
  12. @Call :PrintMenu
  13. @Call :Choice
  14. If "%ascKey%"=="1" Set /P Str=#1]<Nul & @Goto :NewProject
  15. If "%ascKey%"=="2" Set /P Str=#2]<Nul & @Call :ReadHelp
  16. If "%ascKey%"=="3" Set /P Str=#3]<Nul & @Exit 0
  17. If 0 Equ 0 @Goto :Eof %= 防止因特殊字符而出错 =%
  18. @Goto :Eof
  19. :PrintMenu
  20. @Cls
  21. For /L %%I in (0,1,1) Do Echo.
  22. Echo.    欢迎使用 Hope(R) Any2Bat 实用程序
  23. Set /P Str=#    <Nul
  24. For /L %%I in (0,1,71) Do Set /P Str=#=<Nul
  25. Echo.
  26. For /L %%I in (0,1,2) Do Echo.
  27. Echo.    1) 新建工程
  28. Echo.
  29. Echo.    2) 阅读帮助文档
  30. Echo.
  31. Echo.    3) 退出 Hope(R) Any2Bat
  32. Echo.
  33. Set /P Str=#    请选择:[ ]<Nul
  34. @Goto :Eof
  35. :Choice
  36. %_Getch:#ascCode#=ascKey%
  37. @Goto :Eof
  38. :LoadFunctions
  39. Set _Getch=Set "#ascCode#=" ^& ( For /F "Usebackq Delims=" %%_ in (`XCopy /L /W "%~f0" "%~f0" 2^^^>Nul`) Do If Not Defined #ascCode# ( Set "#ascCode#=%%_") ) ^& Call Set "#ascCode#=%%#ascCode#:~-1%%"
  40. @Goto :Eof
  41. :NewProject
  42. @Call :PrintWizardTitle
  43. Set FileName=//
  44. Set /P FileName=#    请将需要打包的文件拖入此窗体:
  45. Set FileName=%FileName:"=%
  46. Set FileName="%FileName%"
  47. If Exist %FileName% @Goto :NewProject1
  48. If Not Exist %FileName% (
  49. Echo.
  50. Echo.
  51. Echo.    无此文件!
  52. Pause > Nul
  53. @Goto :NewProject
  54. )
  55. @Goto :NewProject
  56. :NewProject1
  57. @Call :PrintWizardTitle
  58. Set IsCompress=//
  59. Set jFileName=//
  60. For /F "Delims=" %%I in ('Dir /A-D /B %FileName%') Do (
  61. %= 仅文件名 =%
  62. Set jFileName=%%~nI
  63. Set jstFileName=%%~nI
  64. %= 仅文件拓展名 =%
  65. Set jExtension=%%~xI
  66. )
  67. Set jFileName=%jFileName: =%
  68. Echo.    需要将源文件压缩吗?
  69. Echo.
  70. Echo.    假如您的源文件体积较大,那么压缩后可以减小包的大小,增加解包的效率;如果
  71. Echo.    您的源文件体积较小,那么压缩后可能会适得其反。
  72. Echo.
  73. Echo.
  74. Set /P Str=#    需要压缩吗?[Y/N]:[ ]<Nul
  75. @Call :Choice
  76. If /I "%ascKey%"=="Y" (
  77. Set /P Str=#Y]<Nul
  78. Set IsCompress=True
  79. @Goto :NewProject2
  80. )
  81. If /I "%ascKey%"=="N" (
  82. Set /P Str=#N]<Nul
  83. Set IsCompress=False
  84. @Goto :NewProject2
  85. )
  86. If 0 Equ 0 @Goto :NewProject1 %= 防止因特殊字符而出错 =%
  87. @Goto :NewProject1
  88. :NewProject2
  89. @Cls
  90. Echo.
  91. Echo.  ^>^> 正在创建工程目录
  92. FOR /F "TOKENS=2 DELIMS==" %%I IN ('WMIC PATH WIN32_OPERATINGSYSTEM GET LOCALDATETIME /VALUE ^| FINDSTR "="') DO (
  93. SET "STRDATE=%%I"
  94. )
  95. SET "TODAY=%STRDATE:~0,4%%STRDATE:~4,2%%STRDATE:~6,2%"
  96. SET "NOW=%STRDATE:~0,4%-%STRDATE:~4,2%-%STRDATE:~6,2% %STRDATE:~8,2%#%STRDATE:~10,2%#%STRDATE:~12,2%"
  97. Md "Project_%NOW%" > Nul 2> Nul
  98. Cd /D "Project_%NOW%"
  99. Md "Temp" > Nul 2> Nul
  100. Cd Temp
  101. If /I "%IsCompress%"=="False" (
  102. Copy %FileName% "%Cd%\Source.Src" > Nul 2> Nul
  103. For /F "Delims=" %%I in ('Dir /B Source.Src') Do Set jFileSize=%%~zI
  104. Set hFileName=Source.Src
  105. Set FName=%jstFileName%%jExtension%
  106. )
  107. If /I "%IsCompress%"=="True" (
  108. Copy %FileName% "%Cd%\Source.$" > Nul 2> Nul
  109. Echo.
  110. Echo.  ^>^> 正在压缩
  111. For /F "Delims=" %%I in ('Dir /B Source.$') Do Set jFileSize=%%~zI
  112. MakeCAB /D CompressionType=lzx /D CompressionMemory=21 /D maxdisksize=%jFileSize% %FileName% "%Cd%\%jFileName%.Cab" > Nul 2> Nul
  113. For /F %%I in ('Dir /B "%jFileName%.Cab"') Do Set jFileSize=%%~zI
  114. Set hFileName=%jFileName%.Cab
  115. Set FName=%jFileName%.Cab
  116. )
  117. @Call :GetHex
  118. Cd..
  119. Md "Release" > Nul 2> Nul
  120. Copy "Temp\Hex.Tmp" "Release\Hex.Tmp" > Nul 2> Nul
  121. Cd /D "Release"
  122. @Call :MakeBatch
  123. @Goto :NewProject3
  124. :NewProject3
  125. Echo.
  126. Echo.  ^>^> 已完成打包任务,是否进行查看和调试?
  127. Echo.
  128. Echo.
  129. Set /P Str=#    需要调试和查看吗?[Y/N]:[ ]<Nul
  130. @Call :Choice
  131. If /I "%ascKey%"=="Y" (
  132. Set /P Str=#Y]<Nul
  133. Start Mk.Bat
  134. Start Explorer "%Cd%"
  135. @Goto :Main
  136. )
  137. If /I "%ascKey%"=="N" (
  138. @Goto :Main
  139. )
  140. If 0 Equ 0 @Goto :NewProject1 %= 防止因特殊字符而出错 =%
  141. @Goto :NewProject3
复制代码

作者: HOPE2021    时间: 2022-6-5 14:15

本帖最后由 HOPE2021 于 2022-6-5 15:15 编辑

1.0.0002下半部分
  1. :GetHex
  2. Echo.
  3. Echo.  ^>^> 正在获取文件十六进制信息,此步骤将耗费较多时间,请耐心等待……
  4. Fsutil File CreateNew 1.$ %jFileSize% > Nul 2> Nul
  5. FC /B "%hFileName%" 1.$ > 2.$
  6. @Call :WriteVBS 1 2.$ 3.$
  7. Echo.
  8. Echo.  ^>^> 正在整理文件十六进制信息,此步骤将耗费较多时间,请耐心等待……
  9. Cscript //Nologo WriteBin.VBS
  10. @Call :WriteVBS 2 %jFileSize%
  11. Echo.
  12. Echo.  ^>^> 正在找回文件遗漏的十六进制信息,此步骤将耗费较多时间,请耐心等待……
  13. Cscript //Nologo WriteBn2.VBS
  14. FC /B "%hFileName%" 2.Tmp > 4.$
  15. @Call :WriteVBS 1 4.$ 5.$
  16. Echo.
  17. Echo.  ^>^> 正在重新整理文件十六进制信息,此步骤将耗费较多时间,请耐心等待……
  18. Cscript //Nologo WriteBin.VBS
  19. Type 3.$ > tHexS.$
  20. Type 5.$ >> tHexS.$
  21. Echo.
  22. Echo.  ^>^> 正在生成文件十六进制信息,此步骤将耗费较多时间,请耐心等待……
  23. Sort /Unique tHexS.$ /O tHex.Tmp
  24. Echo.
  25. Echo.  ^>^> 正在生成文件十六进制码,此步骤将耗费较多时间,请耐心等待……
  26. @Call :WriteVBS 3 tHex.Tmp Hex.Tmp
  27. Cscript //Nologo WriteBn3.VBS
  28. @Goto :Eof
  29. :MakeBatch
  30. Echo.
  31. Echo.  ^>^> 正在生成批处理脚本,此步骤将耗费较多时间,请耐心等待……
  32. (
  33. Echo.Dim objFSO, objFile, strLine
  34. Echo.Dim objOpFSO, objOpFile, strOpLine
  35. Echo.Dim i
  36. Echo.Set objFSO = CreateObject^("Scripting.FileSystemObject"^)
  37. Echo.Set objOpFSO = CreateObject^("Scripting.FileSystemObject"^)
  38. Echo.Set objFile = objFSO.OpenTextFile^("Hex.Tmp", 1^)
  39. Echo.Set objOpFile = objOpFSO.CreateTextFile^("Mk.Bat"^)
  40. Echo.objOpFile.Write "@Echo Off" ^& vbCrLf ^& "@Goto :Main" ^& vbCrLf ^& vbCrLf ^& ":Main" ^& vbCrLf ^& vbTab ^& "@Call :Mk_%jFileName%" ^& vbCrLf ^& "@Exit /B" ^& vbCrLf ^& vbCrLf ^& ":Mk_%jFileName%" ^& vbCrLf ^& "Cd. > Mk.$" ^& vbCrLf
  41. Echo.i = 0
  42. Echo.Do Until objFile.atendofstream
  43. Echo. If i = 0 Then objOpFile.Write "(" ^& vbCrLf
  44. Echo. If ^(i + 1^) Mod 256 = 0 Then objOpFile.Write ") >> Mk.$" ^& vbCrLf ^& "(" ^& vbCrLf
  45. Echo. strLine = objFile.ReadLine
  46. Echo. objOpFile.WriteLine "Echo." ^& strLine
  47. Echo. i = i + 1
  48. Echo.Loop
  49. Echo.If i Mod 256 ^<^> 0 Then objOpFile.Write ") >> Mk.$" ^& vbCrLf
  50. Echo.If i Mod 256 = 0 Then objOpFile.Write "Cd.) >> Mk.$" ^& vbCrLf
  51. Echo.objFile.Close
  52. Echo.objOpFile.Close
  53. Echo.Set objFSO = Nothing
  54. Echo.Set objOpFSO = Nothing
  55. ) > $Make.VBS
  56. Cscript //Nologo $Make.VBS
  57. (
  58. Echo.^(
  59. Echo.Echo.Dim objFSO, objFile, strLine
  60. Echo.Echo.Dim objOpFSO, objOpFile, strOpLine
  61. Echo.Echo.Dim i
  62. Echo.Echo.Set objFSO = CreateObject^^^("Scripting.FileSystemObject"^^^)
  63. Echo.Echo.Set objOpFSO = CreateObject^^^("Scripting.FileSystemObject"^^^)
  64. Echo.Echo.Set objFile = objFSO.OpenTextFile^^^("Mk.$", 1^^^)
  65. Echo.Echo.Set objOpFile = objOpFSO.CreateTextFile^^^("Mk_.VBS"^^^)
  66. Echo.Echo.objOpFile.Write "Dim Bin_" ^^^& vbCrLf ^^^& "Bin_ = Array("
  67. Echo.Echo.Do Until objFile.AtEndOfStream
  68. Echo.Echo. strLine = objFile.ReadLine
  69. Echo.Echo. For i = 1 To Len^^^(strLine^^^) Step 2
  70. Echo.Echo. objOpFile.Write "&H" ^^^& Mid^^^(strLine, i, 2^^^) ^^^& ", "
  71. Echo.Echo. Next
  72. Echo.Echo. objOpFile.Write "_ " ^^^& vbCrLf
  73. Echo.Echo.Loop
  74. Echo.Echo.objOpFile.Write "-1)" ^^^& vbCrLf ^^^& vbCrLf
  75. Echo.Echo.objOpFile.WriteLine "Call WriteBinary(""%FName%"", Bin_)"
  76. Echo.Echo.objOpFile.Write vbCrLf
  77. Echo.Echo.objOpFile.WriteLine "Sub WriteBinary(FileName, Buf)"
  78. Echo.Echo.objOpFile.WriteLine " Dim I, aBuf, Size, bStream"
  79. Echo.Echo.objOpFile.WriteLine " Size = UBound(Buf) - 1: ReDim aBuf(Size \ 2)"
  80. Echo.Echo.objOpFile.WriteLine " For I = 0 To Size - 1 Step 2"
  81. Echo.Echo.objOpFile.WriteLine " aBuf(I \ 2) = ChrW(Buf(I + 1) * 256 + Buf(I))"
  82. Echo.Echo.objOpFile.WriteLine " Next"
  83. Echo.Echo.objOpFile.WriteLine " If I = Size Then aBuf(I \ 2) = ChrW(Buf(I))"
  84. Echo.Echo.objOpFile.WriteLine " aBuf=Join(aBuf, """")"
  85. Echo.Echo.objOpFile.WriteLine " Set bStream = CreateObject(""ADODB.Stream"")"
  86. Echo.Echo.objOpFile.WriteLine " bStream.Type = 1: bStream.Open"
  87. Echo.Echo.objOpFile.WriteLine " With CreateObject(""ADODB.Stream"")"
  88. Echo.Echo.objOpFile.WriteLine " .Type = 2 : .Open: .WriteText aBuf"
  89. Echo.Echo.objOpFile.WriteLine " .Position = 2: .CopyTo bStream: .Close"
  90. Echo.Echo.objOpFile.WriteLine " End With"
  91. Echo.Echo.objOpFile.WriteLine " bStream.SaveToFile FileName, 2: bStream.Close"
  92. Echo.Echo.objOpFile.WriteLine " Set bStream = Nothing"
  93. Echo.Echo.objOpFile.WriteLine "End Sub"
  94. Echo.Echo.objFile.Close
  95. Echo.Echo.objOpFile.Close
  96. Echo.Echo.Set objFSO = Nothing
  97. Echo.Echo.Set objOpFSO = Nothing
  98. Echo.^) ^> Mk$.VBS
  99. ) >> Mk.Bat
  100. (
  101. Echo.Cscript //Nologo Mk$.VBS
  102. Echo.Cscript //Nologo Mk_.VBS
  103. If /I %IsCompress%==True Echo.Expand /R "%FName%" ^> Nul 2^> Nul
  104. If /I %IsCompress%==True Echo.If Exist "%FName%" Del /Q "%FName%" ^> Nul 2^> Nul
  105. Echo.If Exist "Mk_.VBS" Del /Q "Mk_.VBS" ^> Nul 2^> Nul
  106. Echo.If Exist "Mk$.VBS" Del /Q "Mk$.VBS" ^> Nul 2^> Nul
  107. Echo.If Exist "Mk.$" Del /Q "Mk.$" ^> Nul 2^> Nul
  108. Echo.@Goto :Eof
  109. ) >> Mk.Bat
  110. If Exist Hex.Tmp Del /Q Hex.Tmp
  111. If Exist $Make.VBS Del /Q $Make.VBS
  112. @Goto :Eof
  113. :WriteVBS
  114. If %1==1 (
  115. (
  116. Echo.Dim objFSO, objFile, strLine
  117. Echo.Dim objOpFSO, objOpFile, strOpLine
  118. Echo.Set objFSO = CreateObject^("Scripting.FileSystemObject"^)
  119. Echo.Set objOpFSO = CreateObject^("Scripting.FileSystemObject"^)
  120. Echo.Set objFile = objFSO.OpenTextFile^("%2", 1^)
  121. Echo.Set objOpFile = objOpFSO.CreateTextFile^("%3"^)
  122. Echo.objFile.SkipLine
  123. Echo.Do Until objFile.atendofstream
  124. Echo. strLine = objFile.ReadLine
  125. Echo. strOpLine = Split^(strLine, " "^)
  126. Echo. objOpFile.WriteLine strOpLine^(0^) ^& strOpLine^(1^)
  127. Echo.Loop
  128. Echo.objFile.Close
  129. Echo.objOpFile.Close
  130. Echo.Set objFSO = Nothing
  131. Echo.Set objOpFSO = Nothing
  132. ) > WriteBin.VBS
  133. )
  134. If %1==2 (
  135. (
  136. Echo.Dim objFSO, objFile, strLine, i
  137. Echo.Set objFSO = CreateObject^("Scripting.FileSystemObject"^)
  138. Echo.Set objFile = objFSO.CreateTextFile^("2.Tmp"^)
  139. Echo.For i = 0 To %2 - 1
  140. Echo. objFile.Write Chr^(65^)
  141. Echo.Next
  142. Echo.objFile.Close  
  143. Echo.Set objFSO=Nothing
  144. ) > WriteBn2.VBS
  145. )
  146. If %1==3 (
  147. (
  148. Echo.Dim objFSO, objFile, strLine
  149. Echo.Dim objOpFSO, objOpFile, strOp
  150. Echo.Dim i
  151. Echo.Set objFSO = CreateObject^("Scripting.FileSystemObject"^)
  152. Echo.Set objOpFSO = CreateObject^("Scripting.FileSystemObject"^)
  153. Echo.Set objFile = objFSO.OpenTextFile^("%2", 1^)
  154. Echo.Set objOpFile = objOpFSO.CreateTextFile^("%3"^)
  155. Echo.i = 0
  156. Echo.Do Until objFile.atendofstream
  157. Echo. strLine = objFile.ReadLine
  158. Echo. strOp = Split^(strLine, ":"^)
  159. Echo. objOpFile.Write strOp^(1^)
  160. Echo. If ^(i + 1^) Mod 32 = 0 Then objOpFile.Write vbCrLf
  161. Echo. i = i + 1
  162. Echo.Loop
  163. Echo.objFile.Close
  164. Echo.objOpFile.Close
  165. Echo.Set objFSO = Nothing
  166. Echo.Set objOpFSO = Nothing
  167. ) > WriteBn3.VBS
  168. )
  169. @Goto :Eof
  170. :PrintWizardTitle
  171. @Cls
  172. For /L %%I in (0,1,1) Do Echo.
  173. Echo.    新建工程向导
  174. Set /P Str=#    <Nul
  175. For /L %%I in (0,1,71) Do Set /P Str=#=<Nul
  176. Echo.
  177. For /L %%I in (0,1,1) Do Echo.
  178. @Goto :Eof
  179. :ReadHelp
  180. @Cls
  181. For /L %%I in (0,1,1) Do Echo.
  182. Echo.  Hope(R) Any to Bat 自述文档
  183. Echo.
  184. Echo.  Hope Any to Bat [Version 1.1.00002]
  185. Echo.  (C) Copyright 2016-2022 Hope Corp.
  186. Echo.
  187. Echo.  ·Hope(R) Any to Bat 是什么
  188. Echo.      Hope(R) Any to Bat 是一款批处理嵌入包设计软件,它可以将任何文件插入到批
  189. Echo.      处理脚本中,并自动设计解包程序。此程序支持VBS技术,能更快的完成操作。
  190. Echo.
  191. Echo.  ·Hope(R) Any to Bat 更新日志
  192. Echo.      ·Version 1.0.0000 09/08/2021
  193. Echo.
  194. Echo.      ·Version 1.0.0001[未发布] 19/08/2021
  195. Echo.        首次尝试VBS内核,兼容性极差
  196. Echo.
  197. Echo.      ·Version 1.0.0002 05/06/2022
  198. Echo.        重新设计VBS内核,速度增强,
  199. Echo.        更改了界面。
  200. Echo.        未解决兼容性问题,打包程序目前只在 Windows 10 测试正常。
  201. Pause > Nul
  202. @Goto :Eof
复制代码

作者: LJY4.0    时间: 2022-6-5 17:13

win7好像没有Sort /Unique后面这个参数
作者: command1152    时间: 2022-6-6 13:15

批处理LOGO代码:
  1. @echo off
  2. echo;
  3. echo; ■    ■
  4. echo; ■    ■
  5. echo; ■■■■
  6. echo; ■    ■
  7. echo; ■    ■
  8. echo;
  9. ping -n 1 127.1 >nul&&cls&&echo;
  10. echo; ■    ■
  11. echo; ■    ■  □□□
  12. echo; ■■■■  □  □
  13. echo; ■    ■  □  □
  14. echo; ■    ■  □□□
  15. echo;
  16. ping -n 1 127.1 >nul&&cls&&echo;
  17. echo; ■    ■          ■■■
  18. echo; ■    ■  □□□  ■    ■
  19. echo; ■■■■  □  □  ■■■
  20. echo; ■    ■  □  □  ■
  21. echo; ■    ■  □□□  ■
  22. echo;
  23. ping -n 1 127.1 >nul&&cls&&echo;
  24. echo; ■    ■          ■■■      □□
  25. echo; ■    ■  □□□  ■    ■  □    □
  26. echo; ■■■■  □  □  ■■■    □□□□
  27. echo; ■    ■  □  □  ■        □
  28. echo; ■    ■  □□□  ■          □□□
  29. echo;
  30. ping -n 1 127.1 >nul&&cls&&echo;
  31. echo;  ■■■
  32. echo; ■    ■
  33. echo; ■■■■
  34. echo; ■    ■
  35. echo; ■    ■
  36. echo;
  37. ping -n 1 127.1 >nul&&cls&&echo;
  38. echo;  ■■■
  39. echo; ■    ■
  40. echo; ■■■■  □□□
  41. echo; ■    ■  □  □
  42. echo; ■    ■  □  □
  43. echo;
  44. ping -n 1 127.1 >nul&&cls&&echo;
  45. echo;  ■■■           ■    ■
  46. echo; ■    ■          ■    ■
  47. echo; ■■■■  □□□    ■■■
  48. echo; ■    ■  □  □        ■
  49. echo; ■    ■  □  □    ■■
  50. echo;
  51. ping -n 1 127.1 >nul&&cls&&echo;
  52. echo; ■■■■
  53. echo;    ■
  54. echo;    ■
  55. echo;    ■
  56. echo;    ■
  57. echo;
  58. ping -n 1 127.1 >nul&&cls&&echo;
  59. echo; ■■■■
  60. echo;    ■     □□□
  61. echo;    ■     □  □
  62. echo;    ■     □  □
  63. echo;    ■     □□□
  64. echo;
  65. ping -n 1 127.1 >nul&&cls&&echo;
  66. echo; ■■■
  67. echo; ■    ■
  68. echo; ■■■
  69. echo; ■    ■
  70. echo; ■■■
  71. ping -n 1 127.1 >nul&&cls&&echo;
  72. echo; ■■■    □□□
  73. echo; ■    ■       □
  74. echo; ■■■     □□□
  75. echo; ■    ■  □   □
  76. echo; ■■■    □□ □
  77. ping -n 1 127.1 >nul&&cls&&echo;
  78. echo; ■■■    □□□  ■■■■
  79. echo; ■    ■       □    ■
  80. echo; ■■■     □□□    ■
  81. echo; ■    ■  □   □    ■
  82. echo; ■■■    □□ □    ■
  83. ping -n 1 127.1 >nul&&cls&&echo;
  84. echo; 欢迎使用 Hope Any tp Bat 。
  85. ping -n 2 127.1 >nul&&cls
  86. exit /b
复制代码

作者: qixiaobin0715    时间: 2022-6-6 13:23

本帖最后由 qixiaobin0715 于 2022-6-6 13:42 编辑

连这个也要给我个技术分,不妥不妥。
作者: qixiaobin0715    时间: 2022-6-6 13:27

何必呢???
作者: command1152    时间: 2022-6-6 13:29

回复 21# qixiaobin0715


    按回复按钮不要钱....
作者: command1152    时间: 2022-6-6 13:48

  >> 正在生成文件十六进制信息,此步骤将耗费较多时间,请耐心等待……
无效命令行开关。

出现问题了
作者: command1152    时间: 2022-6-6 17:09

回复 18# qixiaobin0715


    你知道吗:删除有评分的帖子评分会撤回...
作者: command1152    时间: 2022-6-6 17:52

我用您的按键检测做了一个东西:
  1. @echo off
  2. @Call :LoadFunctions
  3. :i
  4. cls
  5. echo;
  6. echo; 1.退出
  7. echo; 2.输入密码
  8. echo; F.控制台
  9. echo;
  10. Set/P=# 请选择:[ ]<Nul
  11. @Call :Choice
  12. If "%ascKey%"=="1" Set/P=#1]<Nul & exit
  13. If "%ascKey%"=="2" Set/P=#2]<Nul & goto :sr
  14. If "%ascKey%"=="f" Set/P=#F]<Nul & goto :y
  15. If 0 Equ 0 @Goto :i %= 防止因特殊字符而出错 =%
  16. :Choice
  17. %_Getch:#ascCode#=ascKey%
  18. @Goto :Eof
  19. :LoadFunctions
  20. Set _Getch=Set "#ascCode#=" ^& ( For /F "Usebackq Delims=" %%_ in (`XCopy /L /W "%~f0" "%~f0" 2^^^>Nul`) Do If Not Defined #ascCode# ( Set "#ascCode#=%%_") ) ^& Call Set "#ascCode#=%%#ascCode#:~-1%%"
  21. @Goto :Eof
  22. :sr
  23. cls
  24. echo;
  25. echo; 输入密码(.清除 [空格]确定)F调出控制台:
  26. Set/P=# %mm%[ ]    <Nul
  27. @Call :Choice
  28. If "%ascKey%"=="f" Set/P=#F]<Nul & set "xxa= " & set "xxb=*" & set "xxc= " & set "xxd= " & goto :y
  29. if "%ascKey%"=="." set "mm=" & Set/P=#.]<Nul & goto :sr
  30. if "%ascKey%"==" " Set/P=#*]<Nul & if "%mm%"=="HOPE2021" goto :y
  31. Set/P=#%ascKey%]<Nul
  32. set mm=%mm%%ascKey%
  33. goto :sr
  34. :y
  35. set xxa=*
  36. set xxb=
  37. set xxc=
  38. set xxd=
  39. :yb
  40. cls
  41. echo;
  42. echo; 控制台
  43. echo; 按数字选择,[空格]确定
  44. echo;
  45. echo; [%xxa%] 1.开头
  46. echo; [%xxb%] 2.输入密码
  47. echo; [%xxc%] 3.退出
  48. echo; [%xxd%] 4.打开cmd
  49. @Call :Choice
  50. if "%ascKey%"==" " (
  51. if "%xxa%"=="*" goto :i
  52. if "%xxb%"=="*" goto :sr
  53. if "%xxc%"=="*" exit
  54. if "%xxd%"=="*" start "" "cmd"
  55. )
  56. if "%ascKey%"=="1" set "xxa=*" & set "xxb= " & set "xxc= " & set "xxd= "
  57. if "%ascKey%"=="2" set "xxa= " & set "xxb=*" & set "xxc= " & set "xxd= "
  58. if "%ascKey%"=="3" set "xxa= " & set "xxb= " & set "xxc=*" & set "xxd= "
  59. if "%ascKey%"=="4" set "xxa= " & set "xxb= " & set "xxc= " & set "xxd=*"
  60. goto :yb
复制代码

作者: qixiaobin0715    时间: 2022-6-7 10:25

回复 22# command1152
积分并不会与水平是线性关系,有些大佬积分不多,出手就不同凡响。我觉得虽然自己水平有限,能在熟悉的地方帮到别人也是一种幸福,其他的倒是无所谓了。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2