BAT脚本(批处理)去掉多文件2进制的前4个字节,并重新生成同名png文件

[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!

这是一个网友问的一个问题,他的想法是下面这个bat的作用是把拖入的文件去掉2进制的前4个字节,并重新生成同名png文件。。目前问题是一次只能拖入一个文件,,能不能优化以下实现能多个文件拖入???

<code ' & cls & cscript.exe /nologo /e:vbscript "%~f0" "%~f1" "%~n1.png"
  
Set oStream = CreateObject("ADODB.Stream")
oStream.Type = 1    'adTypeBinary
oStream.Mode = 3    'adModeReadWrite
oStream.Open()
With CreateObject("ADODB.Stream")
    .Type = 1    'adTypeBinary
    .Mode = 3    'adModeReadWrite
    .Open()
    .LoadFromFile WScript.Arguments(0)
    .Position = 4
    .CopyTo oStream
    .Close()
End With
oStream.SaveToFile WScript.Arguments(1), 2    'adSaveCreateOverWrite
oStream.Close()

其实完全是可以的,但更建议是VBS,这样就更好用,比bat实现的效率更高;就是把下面带代码保存为.vbs即可;

<code '获取被拖拽的文件集合
Set files = WScript.Arguments.Unnamed

'Setup Objects
Set FSO = CreateObject("Scripting.FileSystemObject")

For Each file In files
    If FSO.FileExists(file) Then
        '处理文件,并输出同名png文件
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Type = 1    'adTypeBinary
        oStream.Mode = 3    'adModeReadWrite
        oStream.Open()
        With CreateObject("ADODB.Stream")
            .Type = 1    'adTypeBinary
            .Mode = 3    'adModeReadWrite
            .Open()
            .LoadFromFile file
            .Position = 4
            .CopyTo oStream
            .Close()
        End With
        newFileName = FSO.GetParentFolderName(file) & "\" & FSO.GetBaseName(file) & ".png"
        oStream.SaveToFile newFileName, 2    'adSaveCreateOverWrite
        oStream.Close()
    End If
Next

有人想说,我想使用bat脚本,安排~但是最多只能拖入并处理成功9个文件,想更多,还是用上面的.VBS吧;

<code' & cls & cscript.exe /nologo /e:vbscript "%~f0" "%~f1" "%~f2" "%~f3"  "%~f4"  "%~f5"   "%~f6"   "%~f7"   "%~f8"   "%~f9"
'获取被拖拽的文件集合
Set files = WScript.Arguments.Unnamed
 
'Setup Objects
Set FSO = CreateObject("Scripting.FileSystemObject")
 
For Each file In files
    If FSO.FileExists(file) Then
        '处理文件,并输出同名png文件
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Type = 1    'adTypeBinary
        oStream.Mode = 3    'adModeReadWrite
        oStream.Open()
        With CreateObject("ADODB.Stream")
            .Type = 1    'adTypeBinary
            .Mode = 3    'adModeReadWrite
            .Open()
            .LoadFromFile file
            .Position = 4
            .CopyTo oStream
            .Close()
        End With
        newFileName = FSO.GetParentFolderName(file) & "\" & FSO.GetBaseName(file) & ".png"
        oStream.SaveToFile newFileName, 2    'adSaveCreateOverWrite
        oStream.Close()
    End If
Next

这个主要给自己也记录一下;

问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

支付宝赞助
微信赞助

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如您下载该资源,行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源
LaoLiang.Net部分资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
意在交流学习,欢迎赞赏评论,如有谬误,请联系指正;转载请注明出处: » BAT脚本(批处理)去掉多文件2进制的前4个字节,并重新生成同名png文件

发表回复

本站承接,网站推广(SEM,SEO);软件安装与调试;服务器或网络推荐及配置;APP开发与维护;网站开发修改及维护; 各财务软件安装调试及注册服务(金蝶,用友,管家婆,速达,星宇等);同时也有客户管理系统,人力资源,超市POS,医药管理等;

立即查看 了解详情