Python到VBScript的转换

Python到VBScript的转换,vbscript,Vbscript,我需要帮助将Python脚本转换为VBScript。我试图将.cal文件作为二进制值文件加载并编辑文件中的特定值,但不幸的是,我的环境仅支持VBScript import argparse parser = argparse.ArgumentParser(description='Sapix Cal File Sensitivity Adjustment') parser.add_argument("-calfile", default="test.cal", help="Enter the

我需要帮助将Python脚本转换为VBScript。我试图将.cal文件作为二进制值文件加载并编辑文件中的特定值,但不幸的是,我的环境仅支持VBScript

import argparse

parser = argparse.ArgumentParser(description='Sapix Cal File Sensitivity Adjustment')
parser.add_argument("-calfile", default="test.cal", help="Enter the Calfile name (ex: 09781DK5081.cal")
parser.add_argument("-vtest", default=125, help="New Vtest setting (85-205)")
parser.add_argument("-vref", default=250, help="New Vref setting (250-120)")


args = parser.parse_args()
calfile = args.calfile
vtest = args.vtest
vref = args.vref


print(calfile)
print(vtest)
print(vref)


with open(calfile, "rb") as binary_file:
    # Read the whole file at once
    data = bytearray(binary_file.read())

    # Find Line with VTEST setting
    ivteststart = data.find(bytearray('PARALLEL_VOLTAGE_TEST', 'utf-8'))
    ivtestend = data.find(b'\n',ivteststart)

    # Remove original VTEST line
    del data[ivteststart:ivtestend+1]

    # Insert New Line with new VTEST
    new_vtest = bytearray("PARALLEL_VOLTAGE_TEST %s\n" % (vtest),'utf-8')
    data[ivteststart:ivteststart] = new_vtest

    # Find Line with VREF setting
    ivrefstart = data.find(bytearray('PARALLEL_VOLTAGE_REF', 'utf-8'))
    ivrefend = data.find(b'\n',ivrefstart)

    # Remove original VREF line
    del data[ivrefstart:ivrefend+1]

    # Insert New Line with new VREF
    new_vref = bytearray("PARALLEL_VOLTAGE_REF %s\n" % (vref),'utf-8')
    data[ivrefstart:ivrefstart] = new_vref



    # Write new sensitivity settings to cal file
with open(calfile, "wb") as binary_file:
    binary_file.write(data)
如果我将文件作为文本文件加载,我可以进行更改,但我不知道如何加载相同的二进制值并进行更改

Option Explicit

Dim objFso, objFolder, objFile, objOtF, cd, content

Dim targetDir
targetDir = "C:\Kiosk\UI"

Dim objRegExp
Set objRegExp = New RegExp
objRegExp.Pattern = "\bPARALLEL_VOLTAGE_TEST \d+\b"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(targetDir)

For Each objFile in objFolder.Files
    If LCase(Right(objFile.Name, 4)) = ".cal" Then
        cd = objFile.Name

        Set objOtF = objFso.OpenTextFile(cd, 1)
        content = objOtF.ReadAll
        objOtF.Close

        Set objOtF = objFso.OpenTextFile(cd, 2)
        objOtF.Write objRegExp.Replace(content, "PARALLEL_VOLTAGE_TEST 230")
        objOtF.Close


Dim objRegExp1
Set objRegExp1 = New RegExp
objRegExp1.Pattern = "\bPARALLEL_VOLTAGE_REF \d+\b"

        Set objOtF = objFso.OpenTextFile(cd, 1)
        content = objOtF.ReadAll
        objOtF.Close

        Set objOtF = objFso.OpenTextFile(cd, 2)
        objOtF.Write objRegExp1.Replace(content, "PARALLEL_VOLTAGE_REF 190")
        objOtF.Close

    End If
    Next

请看下面的帖子:。您可以使用
ADODB.Stream
读取和写入二进制数据。还探讨了其他方法,包括将字符逐个读入数组

以下是该帖子的代码:

Function readBinary(strPath)

    Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject")
    Dim oFile: Set oFile = oFSO.GetFile(strPath)

    If IsNull(oFile) Then MsgBox("File not found: " & strPath) : Exit Function

    With oFile.OpenAsTextStream()
        readBinary = .Read(oFile.Size)
        .Close
    End With

End Function

Function writeBinary(strBinary, strPath)

    Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject")

    ' below lines pupose: checks that write access is possible!
    Dim oTxtStream

    On Error Resume Next
    Set oTxtStream = oFSO.createTextFile(strPath)

    If Err.number <> 0 Then MsgBox(Err.message) : Exit Function
    On Error GoTo 0

    Set oTxtStream = Nothing
    ' end check of write access

    With oFSO.createTextFile(strPath)
        .Write(strBinary)
        .Close
    End With

End Function
函数readBinary(strPath)
Dim of so:Set of so=CreateObject(“Scripting.FileSystemObject”)
Dim of ile:Set of ile=oFSO.GetFile(strPath)
如果为空(oFile),则MsgBox(“未找到文件:”&strPath):退出函数
使用oFile.OpenAsTextStream()
readBinary=.Read(文件大小)
关
以
端函数
函数writeBinary(strBinary,strPath)
Dim of so:Set of so=CreateObject(“Scripting.FileSystemObject”)
'以下行:检查是否可以进行写访问!
暗色oTxtStream
出错时继续下一步
设置oTxtStream=oFSO.createTextFile(strPath)
如果错误号为0,则MsgBox(错误消息):退出函数
错误转到0
设置oTxtStream=Nothing
'结束写访问检查
使用of so.createTextFile(strPath)
.写入(标准二进制)
关
以
端函数

如果你想得到任何人的帮助,你至少需要自己尝试这样做。@Jay Riggs我已经尝试过了,但唯一的问题是,如果我将文件作为文本文件加载,我能够进行更改,但我不知道如何加载相同的二进制值并进行更改。将更改作为文本有什么问题?