首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用另存为的UltraEdit脚本(“^c”)

使用另存为的UltraEdit脚本(“^c”)
EN

Stack Overflow用户
提问于 2019-06-08 03:33:21
回答 2查看 85关注 0票数 1

我正在使用Excel宏调用UltraEdit,以便在一些文件上执行脚本。

在Excel宏中,我编写了UltraEdit脚本保存新文件的路径。到目前为止,所有操作都正常,如果我写了我在临时文件中读取的值,我会看到我有正确的路径。但是当我使用saveAs("^c")时,文件不会保存到我指定的路径,而是保存到当前目录。

如果我使用下面的代码,它会正确地保存文件。但我不想对路径进行硬编码:

代码语言:javascript
复制
  var sPath="H:\\IPEX\\DataFiles\\IPEX_Originals_Cleaned_Files\\"
      + sTransSet 
      +"_"
      + sDocNum
      + "_"
      + now.getFullYear()
      + month
      + day
      + "-"
      + hours
      + minutes
      + seconds
      + ".txt";          

   UltraEdit.saveAs(sPath);

这是我正在尝试修复的代码:

代码语言:javascript
复制
UltraEdit.selectClipboard(1); // switch to user clipboard #1   
var sPath=asParameterList[0]
      + sTransSet 
      +"_"
      + sDocNum
      + "_"
      + now.getFullYear()
      + month
      + day
      + "-"
      + hours
      + minutes
      + seconds
      + ".txt";

UltraEdit.clipboardContent=sPath;          

UltraEdit.outputWindow.write("sPath Value After assign= "+sPath);   
UltraEdit.saveAs("^c");

write命令显示了以下内容:

代码语言:javascript
复制
sPath Value After assign=  

H:\\IPEX\\DataFiles\\IPEX_Originals_Cleaned_Files\\856_IPEX-155630-2_20190607-152606.txt

而不是将文件保存到目录

代码语言:javascript
复制
H:\\IPEX\\DataFiles\\IPEX_Originals_Cleaned_Files\\ 

它将文件保存到目录中

代码语言:javascript
复制
H:\IPEX\DataFiles\Boomi_IPEX_Files

这是原始文件的目录。

EN

回答 2

Stack Overflow用户

发布于 2019-06-08 19:48:20

我同意Alexander Pavlov和他对问题原因的分析。剪贴板中的完全限定文件名无效,因为它包含前导换行符。

并且完全限定的文件名字符串还包含\\而不只是\作为目录分隔符。但是,完全限定的文件名应该是100%正确的。

这些问题最好在Excel文件中的Visual Basic宏中解决。在Visual Basic字符串中,反斜杠字符不像在其他编程语言和脚本语言中那样是转义字符。因此,必须在Visual Basic宏中仅使用\定义文件路径,而不使用\\定义文件路径。在将完全限定的文件名复制到剪贴板之前,还应从Excel宏中的文件路径字符串中删除前导空格/制表符/换行符。

当然,在剪贴板中保存具有完全限定名称的新文件之前,也可以在UltraEdit脚本中使用下面的行。

代码语言:javascript
复制
UltraEdit.clipboardContent = UltraEdit.clipboardContent.replace(/^\s+/,"").replace(/\\\\/g,"\\");

第一次替换将根据Unicode定义删除所有前导空格,第二次替换将文件名字符串中出现的所有\\修改为\,然后将固定的完全限定文件名复制回剪贴板。

但是确实没有必要使用剪贴板,因为它也是由Alexander Pavlov编写的。无效的完全限定文件名字符串已存储在名为sPath的JavaScript String对象中。这个字符串变量的更好的名称应该是sFullFileName。UltraEdit函数UltraEdit.saveAs()需要一个String对象作为参数。因此也可以在UltraEdit脚本中使用:

代码语言:javascript
复制
var sFullFileName = sPath.replace(/^\s+/,"").replace(/\\\\/g,"\\");
UltraEdit.saveAs(sFullFileName);
票数 2
EN

Stack Overflow用户

发布于 2019-06-08 09:23:02

调试输出在新行上打印文件名。文件名前面似乎有一个新的行号。我认为这就是它不起作用的原因。尝试修剪从sPath到第一个字符的所有空格和新行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56500285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档