尝试读取文本文件中的单个值,并使用该值匹配csv上的位置,以便生成带参数的唯一快捷方式。我在下面的脚本中找不到我的VBS逻辑中的错误:
dim objFS,objFileToRead,objTextFile, strSiteCode, strServerFQDN, strPort, mySiteCode
dim arrStr
strComputer = "."
Set objFS = CreateObject("Scripting.FileSystemObject")
set objTextFile = objFS.OpenTextFile("Servers.csv")
Set objFileToRead = objFS.OpenTextFile("code.txt",1)
Set mySiteCode = objFileToRead.ReadAll()
Set WSHShell = CreateObject("WScript.Shell")
Do while NOT objTextFile.AtEndOfStream
arrStr = Split(objTextFile.ReadLine,",")
strSiteCode = arrStr(0)
strServerFQDN = arrStr(1)
strPort = arrStr(2)
if mySiteCode = strSiteCode then
'wscript.echo "Site Code: " & strSiteCode & " - Server FQDN: " & strServerFQDN & " - Port #: " & strPort
fullname = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Generic\Generic.lnk"
TargetPath = "%SystemRoot%\Generic\Generic.exe"
Set shortcut = WSHShell.CreateShortcut(fullname)
shortTarget = shortcut.TargetPath
shortcut.Arguments = "s=" & strServerFQDN & " p=" & strPort
shortcut.save
fullname = "C:\Users\Public\Desktop\Generic.lnk"
TargetPath = "%SystemRoot%\Generic\Generic.exe"
Set shortcut = WSHShell.CreateShortcut(fullname)
shortTarget = shortcut.TargetPath
shortcut.Arguments = "s=" & strServerFQDN & " p=" & strPort
shortcut.save
end if
Loop
我想知道是否需要将csv和txt文件加载到数组中,以便使用正确的信息创建快捷方式。
资源:
servers.csv(文件包含以下格式的信息)
Site1,10.0.0.1,12345 Site2,10.0.0.2,23456 ...
code.txt(文件只包含一行是站点标识符)
站点1
答案 0 :(得分:0)
如果您使用
从打开的cmd窗口执行脚本cscript YourScriptName.vbs
您将看到错误消息。我认为你应该改变这些行
shortTarget = shortcut.TargetPath
到
shortcut.Target = TargetPath
或更好直接
shortcut.Target = "%SystemRoot%\Generic\Generic.exe"
答案 1 :(得分:0)
正如对LotPings的回复中所述(感谢您的反馈!)问题是readall命令正在拾取文本文件的内容以在Site1值的末尾包含CRLF。在显示所有字符的编辑器中打开txt文件之前,这些字符不存在并不明显。
更正和功能代码是:
dim objFS,objFileToRead,objTextFile, strSiteCode, strServerFQDN, strPort, mySiteCode
dim arrStr
strComputer = "."
Set objFS = CreateObject("Scripting.FileSystemObject")
set objTextFile = objFS.OpenTextFile("Servers.csv")
Set objFileToRead = objFS.OpenTextFile("code.txt",1)
mySiteCode = objFileToRead.ReadLine()
Set WSHShell = CreateObject("WScript.Shell")
Do while NOT objTextFile.AtEndOfStream
arrStr = Split(objTextFile.ReadLine,",")
strSiteCode = arrStr(0)
strServerFQDN = arrStr(1)
strPort = arrStr(2)
if trim(mySiteCode) = trim(strSiteCode) then
'Start Menu Icon Creation Here
fullname = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Generic\Generic.lnk"
Set shortcut = WSHShell.CreateShortcut(fullname)
shortcut.TargetPath = "%SystemRoot%\Generic\Generic.exe"
shortcut.Arguments = "s=" & strServerFQDN & " p=" & strPort
shortcut.WorkingDirectory = "%SystemRoot%\Generic"
shortcut.save
'Desktop Icon Creation Here
fullname = "C:\Users\Public\Desktop\Generic.lnk"
Set shortcut = WSHShell.CreateShortcut(fullname)
shortcut.TargetPath = "%SystemRoot%\Generic\Generic.exe"
shortcut.Arguments = "s=" & strServerFQDN & " p=" & strPort
shortcut.WorkingDirectory = "%SystemRoot%\Generic"
shortcut.save
Exit Do
end if
Loop