【问题标题】:Open a file with notepad and save it, using vbscript使用记事本打开文件并保存,使用 vbscript
【发布时间】:2017-04-06 20:16:48
【问题描述】:

我的问题是我想在记事本中打开一个文件,然后从记事本中保存它,而不是手动,而是使用 vbscript(我想要这样做的原因是为了克服一些编码问题)。到目前为止,我找到了一个相关的article,它应该可以解决我的问题,但它不起作用。它有这个代码:

Dim notepad, wndNotepad, strDesktop

Set notepad = Sys.Process("notepad")
Set wndNotepad = notepad.Window("Notepad")

' Open a file in Notepad
wndNotepad.MainMenu.Click("File|Open...")
notepad.Window("#32770", "Open").OpenFile "C:\Program Files\SmartBear\TestComplete 12\install.txt"

' Save the file to the desktop
strDesktop = WshShell.SpecialFolders("Desktop")
wndNotepad.MainMenu.Click "File|Save as..."
notepad.Window("#32770", "Save As").SaveFile strDesktop & "\install.txt"

问题是 vbscript 无法识别第二行中的 Sys (Sys.Process)。我假设在这一行中应该创建一个记事本进程(like here),然后像这个进程的对象一样返回到变量记事本(我不知道是否以及如何实现)按顺序用于第三行 (notepad.Window("Notepad"))。

如果有人知道代码应该如何工作,我将非常感谢您的帮助。也非常欢迎有关如何解决此问题的任何其他建议(或有关是否可以实际解决的任何想法)。感谢您的宝贵时间。

编辑

正如我在下面的 cmets 中所说,上面的代码需要昂贵的 TestComplete 软件。因此,如果有人对以其他方式(其他软件、其他代码、其他编程语言)解决我的问题有任何想法,我会很高兴学习它。

【问题讨论】:

  • 我会使用文本流。将Charset 属性设置为您的文件,读取文件,更改charset,然后将其写回。 msdn.microsoft.com/en-us/library/ms675032(v=vs.85).aspx
  • 简短的回答是 Sys.Process 不在任何 Windows 本机库中,它需要额外的库。可能想搜索谷歌以找出哪个库(dll)具有这些进程和功能。
  • 您发布的代码不是有效的 VBScript。此外,您为什么只想在记事本中打开一个文本文件,然后一开始就以不同的名称保存它?只需复制文件。解决编码问题:发布一个描述实际问题的问题。
  • 如果只是编码,请提供文件样本。您所看到的,您想看到的,我们可以帮助您使用本机库有效地重建它。
  • 文件前几个字节的十六进制转储可能也会有所帮助。

标签: windows vbscript process scripting notepad


【解决方案1】:

我认为您需要将文件从一个路径复制到另一个路径。复制文件请参考以下代码,

函数复制文件()

strSourceFile = "c:\.....\source.txt"
strDestFile = "c:\.....\dest.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
'Check to see if the file is read-only
If Not fso.GetFile(DestinationFile).Attributes And 1 Then 
    'The file exists and is not read-only.  Safe to replace the file.
    fso.CopyFile strSourceFile, strDestFile, strOverWrite
Else 
    'The file exists and is read-only.
    'Remove the read-only attribute
    fso.GetFile(DestinationFile).Attributes = fso.GetFile(DestinationFile).Attributes - 1
    'Replace the file
    fso.CopyFile strSourceFile, strDestFile, strOverWrite
    'Reapply the read-only attribute
    fso.GetFile(DestinationFile).Attributes = fso.GetFile(DestinationFile).Attributes + 1
End If

结束函数

【讨论】:

  • 感谢您的回答,但我希望代码打开记事本,然后用记事本保存。原因是我在两个文件(原始文件和用记事本保存后的文件)的编码中看到了差异。最后,我发现这不是必需的,也不能解决我的编码问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2016-09-16
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多