Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript 将基数36添加到基数10转换_Vbscript_Base - Fatal编程技术网

Vbscript 将基数36添加到基数10转换

Vbscript 将基数36添加到基数10转换,vbscript,base,Vbscript,Base,我正试图在这个基础上将数字转换为指定的基数 在我的例子中,我有一个vbs脚本,它正在查找序列号,并将字母数字字符(基36)输出到txt文件 我想在txt文件中添加序列号的10进制值。所以我得到如下输出: Serial Number: ABC1234 Service Code: 22453156048 序列号:ABC1234 服务代码:22453156048 这是我的出发点。这个脚本运行并给我一个带有序列号的txt文件 On Error Resume Next ' Initialize W

我正试图在这个基础上将数字转换为指定的基数

在我的例子中,我有一个vbs脚本,它正在查找序列号,并将字母数字字符(基36)输出到txt文件

我想在txt文件中添加序列号的10进制值。所以我得到如下输出:

Serial Number: ABC1234 Service Code: 22453156048 序列号:ABC1234 服务代码:22453156048 这是我的出发点。这个脚本运行并给我一个带有序列号的txt文件

On Error Resume Next

' Initialize WSH objects
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("WScript.Shell")
Set WNetwork = WScript.CreateObject("WScript.Network")

' Initialize WMI
Set WMI = GetObject("winmgmts:\\.\root\cimv2")

' Find client machine name
Set ComputerInfo = WMI.ExecQuery("Select * from Win32_ComputerSystem")
For Each temp In Computerinfo
  WorkstationName = WNetwork.ComputerName
Next

Set Bios = WMI.ExecQuery("Select * from Win32_BIOS")
For Each temp In Bios
  SerN = temp.SerialNumber
Next

' Create Logfiles
Dim sDateTimeStamp
sDateTimeStamp = cStr(Year(now())) & _
                 Pad(cStr(Month(now())),2) & _
                 Pad(cStr(Day(now())),2) & _
                 Pad(cStr(Hour(now())),2) & _
                 Pad(cStr(Minute(now())),2) & _
                 Pad(cStr(Second(now())),2)

Function Pad(CStr2Pad, ReqStrLen)
  Dim Num2Pad

  Pad = CStr2Pad
  If Len(CStr2Pad) < ReqStrLen Then
    Num2Pad = String((ReqStrlen - Len(CStr2Pad)), "0")
    Pad = Num2Pad & CStr2Pad 
  End If
End Function

Set LogFile = FSO.CreateTextFile("c:\logs\" & WorkstationName & "_" & sDateTimeStamp & ".txt")

Set EnviromentVariables = Shell.Environment("PROCESS")
LogFile.Writeline("Serial Number:" & space(2) & SerN)
出错时继续下一步
'初始化WSH对象
设置FSO=CreateObject(“Scripting.FileSystemObject”)
Set Shell=WScript.CreateObject(“WScript.Shell”)
设置WNetwork=WScript.CreateObject(“WScript.Network”)
'初始化WMI
设置WMI=GetObject(“winmgmts:\\.\root\cimv2”)
'查找客户端计算机名称
Set ComputerInfo=WMI.ExecQuery(“从Win32\U ComputerSystem中选择*)
对于Computerinfo中的每个临时值
WorkstationName=WNetwork.ComputerName
下一个
设置Bios=WMI.ExecQuery(“从Win32\U Bios中选择*)
对于Bios中的每个临时值
SerN=临时序列号
下一个
'创建日志文件
暗色时间戳
sDateTimeStamp=cStr(年份(现在())&_
Pad(cStr(月份(现在))、2)和_
Pad(cStr(Day(now())),2)和_
Pad(cStr(小时)(现在())、2)和_
Pad(cStr(分钟(现在))、2)和_
Pad(cStr(第二个(现在()),2)
功能板(CStr2Pad,要求)
暗Num2Pad
Pad=CStr2Pad
如果Len(CStr2Pad)
但是当我试图从链接的帖子中添加脚本时,我没有得到任何输出文件

On Error Resume Next

' Initialize WSH objects
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("WScript.Shell")
Set WNetwork = WScript.CreateObject("WScript.Network")

' Initialize WMI
Set WMI = GetObject("winmgmts:\\.\root\cimv2")

' Find client machine name
Set ComputerInfo = WMI.ExecQuery("Select * from Win32_ComputerSystem")
For Each temp In Computerinfo
  WorkstationName = WNetwork.ComputerName
Next

Set Bios = WMI.ExecQuery("Select * from Win32_BIOS")
For Each temp In Bios
  SerN = temp.SerialNumber

  Function ToBase(ByVal n, b)
    b = 10
    n = SerN
    If b < 2 Or b > 36 Then Exit Function
    Const SYMBOLS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    Do
      ToBase = Mid(SYMBOLS, n Mod b + 1, 1) & ToBase
      n = Int(n / b)
    Loop While n > 0
  End Function

  SrvCode = ToBase(SerN,10)
Next

' Create Logfiles
Dim sDateTimeStamp
sDateTimeStamp = cStr(Year(now())) & _
                 Pad(cStr(Month(now())),2) & _
                 Pad(cStr(Day(now())),2) & _
                 Pad(cStr(Hour(now())),2) & _
                 Pad(cStr(Minute(now())),2) & _
                 Pad(cStr(Second(now())),2)

Function Pad(CStr2Pad, ReqStrLen)
  Dim Num2Pad

  Pad = CStr2Pad
  If Len(CStr2Pad) < ReqStrLen Then
    Num2Pad = String((ReqStrlen - Len(CStr2Pad)), "0")
    Pad = Num2Pad & CStr2Pad 
  End If
End Function

Set LogFile = FSO.CreateTextFile("c:\logs\" & WorkstationName & "_" & sDateTimeStamp & ".txt")

Set EnviromentVariables = Shell.Environment("PROCESS")
LogFile.Writeline("Serial Number:" & space(2) & SerN)
LogFile.Writeline("Service Code:" & space(3) & SrvCode)
出错时继续下一步
'初始化WSH对象
设置FSO=CreateObject(“Scripting.FileSystemObject”)
Set Shell=WScript.CreateObject(“WScript.Shell”)
设置WNetwork=WScript.CreateObject(“WScript.Network”)
'初始化WMI
设置WMI=GetObject(“winmgmts:\\.\root\cimv2”)
'查找客户端计算机名称
Set ComputerInfo=WMI.ExecQuery(“从Win32\U ComputerSystem中选择*)
对于Computerinfo中的每个临时值
WorkstationName=WNetwork.ComputerName
下一个
设置Bios=WMI.ExecQuery(“从Win32\U Bios中选择*)
对于Bios中的每个临时值
SerN=临时序列号
函数ToBase(ByVal n,b)
b=10
n=SerN
如果b<2或b>36,则退出功能
Const SYMBOLS=“0123456789abcdefghijklmnopqrstuvxyz”
做
ToBase=Mid(符号,n模b+1,1)和ToBase
n=Int(n/b)
n>0时循环
端函数
SrvCode=ToBase(SerN,10)
下一个
'创建日志文件
暗色时间戳
sDateTimeStamp=cStr(年份(现在())&_
Pad(cStr(月份(现在))、2)和_
Pad(cStr(Day(now())),2)和_
Pad(cStr(小时)(现在())、2)和_
Pad(cStr(分钟(现在))、2)和_
Pad(cStr(第二个(现在()),2)
功能板(CStr2Pad,要求)
暗Num2Pad
Pad=CStr2Pad
如果Len(CStr2Pad)
VBScript中不允许嵌套函数定义。这应该会引发语法错误,尽管全局
On error Resume Next
(您首先不应该使用)

将函数定义放在全局范围内的某个位置(循环之外),例如,通过更改以下内容:

Set Bios = WMI.ExecQuery("Select * from Win32_BIOS")
For Each temp In Bios
  SerN = temp.SerialNumber

  Function ToBase(ByVal n, b)
    b = 10
    n = SerN
    If b < 2 Or b > 36 Then Exit Function
    Const SYMBOLS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    Do
      ToBase = Mid(SYMBOLS, n Mod b + 1, 1) & ToBase
      n = Int(n / b)
    Loop While n > 0
  End Function

  SrvCode = ToBase(SerN,10)
Next
Set Bios=WMI.ExecQuery(“从Win32\U Bios中选择*)
对于Bios中的每个临时值
SerN=临时序列号
函数ToBase(ByVal n,b)
b=10
n=SerN
如果b<2或b>36,则退出功能
Const SYMBOLS=“0123456789abcdefghijklmnopqrstuvxyz”
做
ToBase=Mid(符号,n模b+1,1)和ToBase
n=Int(n/b)
n>0时循环
端函数
SrvCode=ToBase(SerN,10)
下一个
为此:

Function ToBase(ByVal n, b)
  If b < 2 Or b > 36 Then Exit Function
  Const SYMBOLS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  Do
    ToBase = Mid(SYMBOLS, n Mod b + 1, 1) & ToBase
    n = Int(n / b)
  Loop While n > 0
End Function

Set Bios = WMI.ExecQuery("Select * from Win32_BIOS")
For Each temp In Bios
  SerN = temp.SerialNumber
  SrvCode = ToBase(SerN,10)
Next
功能数据库(ByVal n,b)
如果b<2或b>36,则退出功能
Const SYMBOLS=“0123456789abcdefghijklmnopqrstuvxyz”
做
ToBase=Mid(符号,n模b+1,1)和ToBase
n=Int(n/b)
n>0时循环
端函数
设置Bios=WMI.ExecQuery(“从Win32\U Bios中选择*)
对于Bios中的每个临时值
SerN=临时序列号
SrvCode=ToBase(SerN,10)
下一个

确保删除行
b=10
n=SerN
。它们把传递给参数
b
n
的值弄乱了,VBScript中不允许嵌套函数定义。这应该会引发语法错误,尽管全局
On error Resume Next
(您首先不应该使用)

将函数定义放在全局范围内的某个位置(循环之外),例如,通过更改以下内容:

Set Bios = WMI.ExecQuery("Select * from Win32_BIOS")
For Each temp In Bios
  SerN = temp.SerialNumber

  Function ToBase(ByVal n, b)
    b = 10
    n = SerN
    If b < 2 Or b > 36 Then Exit Function
    Const SYMBOLS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    Do
      ToBase = Mid(SYMBOLS, n Mod b + 1, 1) & ToBase
      n = Int(n / b)
    Loop While n > 0
  End Function

  SrvCode = ToBase(SerN,10)
Next
Set Bios=WMI.ExecQuery(“从Win32\U Bios中选择*)
对于Bios中的每个临时值
SerN=临时序列号
函数ToBase(ByVal n,b)
b=10
n=SerN
如果b<2或b>36,则退出功能
Const SYMBOLS=“0123456789abcdefghijklmnopqrstuvxyz”
做
ToBase=Mid(符号,n模b+1,1)和ToBase
n=Int(n/b)
n>0时循环
端函数
SrvCode=ToBase(SerN,10)
下一个
为此:

Function ToBase(ByVal n, b)
  If b < 2 Or b > 36 Then Exit Function
  Const SYMBOLS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  Do
    ToBase = Mid(SYMBOLS, n Mod b + 1, 1) & ToBase
    n = Int(n / b)
  Loop While n > 0
End Function

Set Bios = WMI.ExecQuery("Select * from Win32_BIOS")
For Each temp In Bios
  SerN = temp.SerialNumber
  SrvCode = ToBase(SerN,10)
Next
功能数据库(ByVal n,b)
如果b<2或b>36,则退出功能
Const SYMBOLS=“0123456789abcdefghijklmnopqrstuvxyz”
做
ToBase=Mid(符号,n模b+1,1)和ToBase
n=Int(n/b)
n>0时循环
端函数
设置Bios=WMI.ExecQuery(“从Win32\U Bios中选择*)
对于Bios中的每个临时值
SerN=临时序列号
SrvCode=ToBase(SerN,10)
下一个
确保