使用变量命名新的文本文件
Using a variable to name a new text file
我有一个小脚本,我想找到计算机名称,并在闪存驱动器中创建一个文本文件,该脚本将 运行 以 PC 名称命名。
到目前为止,我可以将名称放入一个变量中,并创建一个带有字符串文字参数的文本文件。但是如果我尝试将名称传递给 GetFileName
和 GetAbsolutePathName
调用它要么给我一个错误,要么给文件一个空白名称。
编辑: 我已将代码更新为完整代码。该程序旨在获取我管理的实验室中所有计算机上的 Windows 许可证密钥,以便于参考。如果问题很简单,我很抱歉,这是我写的第一个脚本,我觉得这是我似乎缺少的东西。
有问题的代码:
Set WshShell = CreateObject("WScript.Shell")
ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"))
Set wshShell = CreateObject( "WScript.Shell" )
strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
Function ConvertToKey(Key)
Const KeyOffset = 52
i = 28
Chars = "BCDFGHJKMPQRTVWXY2346789"
Do
Cur = 0
x = 14
Do
Cur = Cur * 256
Cur = Key(x + KeyOffset) + Cur
Key(x + KeyOffset) = (Cur \ 24) And 255
Cur = Cur Mod 24
x = x - 1
Loop While x >= 0
i = i - 1
KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
If (((29 - i) Mod 6) = 0) And (i <> -1) Then
i = i - 1
KeyOutput = "-" & KeyOutput
End If
Loop While i >= 0
ConvertToKey = KeyOutput
Dim filesys, filetxt, getname, path
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.CreateTextFile("I:\"& strComputerName & ".txt", True)
path = filesys.GetAbsolutePathName("I:\"& strComputerName & ".txt")
getname = filesys.GetFileName(path)
filetxt.WriteLine(KeyOutPut)
filetxt.Close
End Function
结果是在正确位置生成名为“.txt”的文本文件。
您必须将 strComputerName
传递给函数,并在调用前加上 Call
关键字。
我有一个小脚本,我想找到计算机名称,并在闪存驱动器中创建一个文本文件,该脚本将 运行 以 PC 名称命名。
到目前为止,我可以将名称放入一个变量中,并创建一个带有字符串文字参数的文本文件。但是如果我尝试将名称传递给 GetFileName
和 GetAbsolutePathName
调用它要么给我一个错误,要么给文件一个空白名称。
编辑: 我已将代码更新为完整代码。该程序旨在获取我管理的实验室中所有计算机上的 Windows 许可证密钥,以便于参考。如果问题很简单,我很抱歉,这是我写的第一个脚本,我觉得这是我似乎缺少的东西。
有问题的代码:
Set WshShell = CreateObject("WScript.Shell")
ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"))
Set wshShell = CreateObject( "WScript.Shell" )
strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
Function ConvertToKey(Key)
Const KeyOffset = 52
i = 28
Chars = "BCDFGHJKMPQRTVWXY2346789"
Do
Cur = 0
x = 14
Do
Cur = Cur * 256
Cur = Key(x + KeyOffset) + Cur
Key(x + KeyOffset) = (Cur \ 24) And 255
Cur = Cur Mod 24
x = x - 1
Loop While x >= 0
i = i - 1
KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
If (((29 - i) Mod 6) = 0) And (i <> -1) Then
i = i - 1
KeyOutput = "-" & KeyOutput
End If
Loop While i >= 0
ConvertToKey = KeyOutput
Dim filesys, filetxt, getname, path
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.CreateTextFile("I:\"& strComputerName & ".txt", True)
path = filesys.GetAbsolutePathName("I:\"& strComputerName & ".txt")
getname = filesys.GetFileName(path)
filetxt.WriteLine(KeyOutPut)
filetxt.Close
End Function
结果是在正确位置生成名为“.txt”的文本文件。
您必须将 strComputerName
传递给函数,并在调用前加上 Call
关键字。