[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样将2进制流写入文件?

各位朋友好

       我是咱们论坛的新人,有很多不懂的,请大家多多帮助,谢谢

我想请教一下:怎样将2进制流通过批处理写入到一个文件中,具体问题是这样的:

我手头有一款游戏,运行游戏后会生成一个配置文件,在配置文件里面记录着诸如屏幕分辨率,按键设置等,现在我想用批处理做一个游戏的启动器

通过选取菜单上不同的代码,来达到以不同的方式运行游戏(比如:按1键,就会以640*480的方式来运行,按2键就是800*600,这样只要在开启游戏前

就可以调整内部的选项,比较省事),但是我用文本编辑器打开那个配置文件,发现里面是乱码,也就是说,它应该是一个2进制文件,现在我就想问一下

如何将2进制流写入到文件中,我用copy命令  管道 >> 等都不能实现,麻烦高手指点一下,谢谢了

问题提的很清晰。不过能不能吧你的文件截个图或者传上来。
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

謝謝這位熱心的班主,等晚上到家才能上傳,現在還在上班中……

TOP

具体的内容如下:我已经分析出一些东西
offset 11C 控制游戏的分辨率 320x240:00 640x480:02 1280x960:04
offset 11D 控制是否开启优化 00-06

我写的批处理如下:

@echo off
set gamemode=游戏模式: 待选
set screenmode=画面模式: 待选
set xy=分辨率:待选
set yh=线性柔化:待选
:menu
@echo ╔┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╗
@echo ┋SorXXX的打开工具,主要用于游戏模式的选取以及屏幕分辨率的调整┋
@echo ┋                                                                                                          ┋
@echo ┋ 【1】: 运行原版游戏内容                                                                  ┋
@echo ┋                                                                                                          ┋
@echo ┋ 【2】: 运行导演剪辑版(a-e)                                                              ┋
@echo ┋                                                                                                          ┋
@echo ┋ 【3】: 运行导演剪辑版(f-j)                                                                ┋
@echo ┋                                                                                                          ┋
@echo ┋ 【4】: 使游戏运行于Windows模式下                                                 ┋
@echo ┋                                                                                                          ┋
@echo ┋ 【5】: 使游戏运行于FullScreen模式下                                             ┋
@echo ┋                                                                                                         ┋
@echo ┋ 【6】: 使游戏运行于640x480分辨率下                                             ┋
@echo ┋                                                                                                          ┋
@echo ┋ 【7】: 使游戏运行于1280x960分辨率下                                            ┋
@echo ┋                                                                                                          ┋
@echo ┋ 【8】: 开启画面线性柔化                                                                  ┋
@echo ┋                                                                                                          ┋
@echo ┋ 【9】: 运行游戏 enjoy it!                                                                  ┋
@echo ┋                                                                                                          ┋
@echo ┋ 【0】: 退出本程序                                                                            ┋
@echo ┋                       感谢使用本软件(by Sniperhgy)                                   ┋
@echo ┋                                                                                                          ┋
@echo ┋                                  作者QQ:754972247                                        ┋
@echo ╚┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╝
@echo.
@echo  %gamemode%  %screenmode%  %xy%  %yh%
@echo.
@echo 输入相应的数字后,按Entry确认
set /p UserChoice=
if "%UserChoice%"=="1" goto normal
if "%UserChoice%"=="2" goto cuta-e
if "%UserChoice%"=="3" goto cutf-j
if "%UserChoice%"=="4" goto wm
if "%UserChoice%"=="5" goto fm
if "%UserChoice%"=="6" goto 64
if "%UserChoice%"=="7" goto 19
if "%UserChoice%"=="8" goto srh
if "%UserChoice%"=="9" goto rungame
if "%UserChoice%"=="0" goto quit
@echo 请正确选择(0-9中的一项)
pause>nul
cls
goto menu
:normal
set gamemode=游戏模式:原版游戏
if not exist .\data\dataforopener\orieng.dat goto error
copy .\data\dataforopener\orieng.dat .\data\levels.txt /y
cls
goto menu
:cuta-e
set gamemode=游戏模式:剪辑版(a-e)
if not exist .\data\dataforopener\cuta-e.dat goto error
copy .\data\dataforopener\cuta-e.dat .\data\levels.txt /y
cls
goto menu
:cutf-j
set gamemode=游戏模式:剪辑版(f-j)
if not exist .\data\dataforopener\cutf-j.dat goto error
copy .\data\dataforopener\cutf-j.dat .\data\levels.txt /y
cls
goto menu
:wm
set screenmode=画面模式:窗口模式
cls
goto menu
:fm
set screenmode=画面模式:全屏模式
cls
goto menu
:64
set xy=分辨率:640x480
cls
goto menu
:19
set xy=分辨率:1280x960
cls
goto menu
:srh
set yh=线性柔化:开启
cls
goto menu
:rungame
if not exist .\sorxxx.exe goto mainerror
.\sorxxx.exe
cls
goto menu
:error
cls
@echo 缺少必要的文件,无法进行设置,请确保本程序的完整性。
pause>nul
goto quit
:mainerror
cls
@echo 游戏启动文件:SorXXX.exe未被发现,请将游戏的启动文件改名未SorXXX.exe
@pause>nul
goto quit
:quit
cls
@echo Thank you for playing!
@pause>nul
@exit

现在这个批处理里面还有6个地方需要补全,就是那些关于将2进制流写入文件的地方,比如,我选择6,就应该将02写入到存档文件的offset 14C这个位置中
麻烦各位帮帮忙

TOP

还是不懂配置文件的格式。建议楼主吧配置文件直接发出来。不要吧你分析的结果发上来。如果无法确定配置文件的格式和存储类别。不知道如何下手
顺便说下楼主上面的代码可以简化下。
关于菜单的制作可以利用
for /l %%i in ( ) do (
set /p=    <nul
)
这个句型。
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

谢谢这位版主,我已经用C语言实现了,然后通过我的这个批处理调用,关于版主说的那个菜单的优化,能否说的再详细一点,谢谢了

TOP

set "List=1.哈哈,2.嘿嘿,3.呵呵,"
for %%i in (%List%) do (set /p=%%i&echo\)
大概这个样子。
你测试下。对于应用类型的批处理编程。建议多看看namejm版主的作品。
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

謝謝版主指點

TOP

好复杂``完全看不懂

TOP

返回列表