使用变量命名新文本文件

时间:2015-09-21 15:50:05

标签: vbscript text-files

我有一个小脚本,我想查找计算机名称,并在闪存驱动器中创建一个文本文件,脚本将以PC名称命名。

到目前为止,我可以将名称拉入变量,并使用字符串文字参数创建文本文件。但如果我尝试将名称传递给GetFileNameGetAbsolutePathName,则会给我一个错误或给文件一个空白名称。

编辑:我已将代码更新为完整代码。该程序旨在获取我管理的实验室中所有计算机上的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

结果是一个名为&#34; .txt&#34;的文本文件。在正确的位置。

1 个答案:

答案 0 :(得分:0)

您必须将strComputerName传递给该功能,并使用Call关键字在呼叫前加上。