使用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"等等。

指出/强调这一点

  1. 你不应该使用string连接来build立path; .BuildPath()是要走的路
  2. “相对path”需要明确的“相对于什么”规范
  3. 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