У меня есть небольшой скрипт, который я хочу найти имя компьютера, и создаю текстовый файл на флешке, сценарий будет запущен из именованного имени компьютера.Использование переменной для ввода нового текстового файла
До сих пор я могу вытащить имя в переменную и создать текстовый файл с аргументом строкового литерала. но если я попытаюсь передать имя в 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'? Вы правильно определили 'wshShell'? –
Использовали ли вы On Error Resume Next? Вы объявили эту переменную wshShell? Вы должны отредактировать свой вопрос и добавить код дырки! – Hackoo