我正在尝试在VBS中创建一个行,该行将创建一个文件路径,文件名作为变量,但我得到一个Permission Denied错误。
这是我到目前为止所做的:
filename = WScript.Arguments.unnamed(0) 'this value is transfered from a batch file.
Const ForReading = 1, ForWriting = 2, ForAppending = 8, CreateIfNeeded = true
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load ("C:\Users\c1921\Ayla_Data\XMLFile.xml")
Set colNodes = xmlDoc.SelectNodes _
("/properties/property/(name)")
For Each objNode In colNodes
strSource = "C:\Users\c1921\Ayla_Data\AylaDatapoints\" & filename & ".csv"
Dim fso, f
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set f = fso.OpenTextFile(strSource, 2)
我还添加了msgbox(filename)
行,以查看我得到的值,这是正确的值。
我也试过这样的事情,看看它是否会有所帮助,但它也不起作用:
Set f = fso.OpenTextFile("C:\Users\c1921\Ayla_Data\AylaDatapoints\AC000N000004593.csv", 2)
这应该很容易我不知道我哪里出错了。任何帮助找到正确的方向将不胜感激。
如果相关的话,我也尝试了这样的事情(以及其他变体):
Set f = fso.OpenTextFile("C:\Users\c1921\Ayla_Data\AylaDatapoints\" & Chr(34) & filename & Chr(34) & " " & ".csv", 2) & Chr(34)
修改
尝试使用以下代码在VB中创建文件:
strSource = "C:\Users\c1921\Ayla_Data\AylaDatapoints\" & filename & ".csv"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.CreateTextFile(strSource, _
ForWriting, True)
objLogFile.Writeline
我仍然得到Permission Denied运行时错误。该文件已创建,但这是唯一写入其中的内容:
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
答案 0 :(得分:1)
如果你的.bat文件将curltest.vbs的(StdOut)输出重定向到.csv文件,那么在.vbs中创建(或写入).csv是没有意义的。相反,你应该WScript.Echo你想要出现在.csv。
的信息此外,您需要删除徽标 - 通过使用// S选项启动带有// NoLogo的.vbs或将//“NoLogo”切换到用户的c / wscript。
证据:
copy con curltest.vbs
WScript.Echo "WScript.Echoed into whatever.csv"
^Z
cscript //NoLogo curltest.vbs >whatever.csv
type whatever.csv
WScript.Echoed into whatever.csv