使用OpenText和SaveAs方法在VBS中打开相对path
好的,所以我有一些代码在一个VBS文件,基本上我想打开一个CSV文件。 执行一些更改(我可以稍后再解决),然后将其保存为xls。 代码运行完全合格的文件path时完美无瑕。 不过,我需要的文件path是相对的。 文件将始终打开并保存到脚本运行的相同path。 我看了GetParentFolderName和GetAbsolutePathName。 然而,我不能如何调用文本中的完全合格的path。 我试过把variables放在文件名不带引号的地方,附加了句点。
任何关于构build函数的例子,然后在下面的代码中调用它将是一个巨大的帮助。
Dim myXL Const xlDelimited = 1 Const xlWorkbookNormal = -4143 Set myXL=CreateObject("Excel.Application") myXL.Visible=False myXL.WorkBooks.OpenText "file.csv", , , xlDelimited, , , , , True myXL.DisplayAlerts=False MORE CODE WILL GO HERE myXL.ActiveWorkbook.SaveAs "new_file.xls", xlWorkbookNormal myXL.DisplayAlerts=True myXL.ActiveWorkbook.Close False myXL.Quit Set myXL = Nothing
你可以通过使用这个代码得到你的脚本的path,我发现在关于相对path的答案
p = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
p应该是你的脚本的path,然后你可以编辑"file.csv"
到p & "\file.csv"
等等。
指出/强调这一点
- 你不应该使用string连接来build立path; .BuildPath()是要走的路
- “相对path”需要明确的“相对于什么”规范
- VBScript的连接运算符是
&
不是.
(点/周期)
:
>> f = WScript.ScriptFullName >> n = WScript.ScriptName >> p = goFS.GetParentFolderName(f) >> a = goFS.GetAbsolutePathName(n) >> c = goWS.CurrentDirectory >> WScript.Echo "c", c >> WScript.Echo "p", p >> WScript.Echo "?", p & n >> Wscript.Echo "a", a >> WScript.Echo "!", goFS.BuildPath(p, n) >> c C:\Documents and Settings\eh p M:\bin ? M:\binivbs.wsf a C:\Documents and Settings\eh\ivbs.wsf ! M:\bin\ivbs.wsf