【问题标题】:VBScript Carriage ReturnsVBScript 回车
【发布时间】:2013-09-01 19:39:48
【问题描述】:

我编写了以下 VB 脚本,以便在 Linux 机器上运行来自 WIN XP 的命令并将输出命令重定向到 out.txt 文件(在 C:\ 下)

我的 VB 脚本我将 /etc/hosts 文件从 Linux 机器打印到 out.txt 文件中

脚本运行良好,但我有一个问题:

/etc/hosts 文件以一长行打印在 out.txt 文件中,而不是三行

示例:(out.txt)

         127.0.0.1      localhost  19.20.183.99  MY_IP 10.10.10.10 LOOP

out.txt

中打印以下主机文件
127.0.0.1      localhost
19.20.183.99  MY_IP
10.10.10.10 LOOP

我的 VB 脚本

Const TARGET_HOST = "19.20.183.99"
const PATH =  "cat /etc/hosts" 
const LOGIN = "root"
const PASS = " dgdgd "
Const PLINKPATH="""C:\dir1\plink.exe"""
Set Sh = CreateObject("WScript.Shell")

CMD = " echo y | " &   PLINKPATH  & " -ssh -pw " & PASS & LOGIN & "@" & TARGET_HOST & " " & PATH 

Sh.Run "cmd /k" & CMD &  " > ""C:\out.txt""" , 1, True

请建议我需要在我的 VB 脚本中修复什么以便打印正确的主机文件(逐行)而不是一长行?

【问题讨论】:

标签: vbscript windows-xp


【解决方案1】:

尝试用 lf(换行)替换 lf 和 cr(回车)。 Linux 只有 LF,windows 也需要回车来显示多余的行。

或者,在 Notepad++ 中打开文件,您会注意到这些行是逐行打印的。 (http://notepad-plus-plus.org/download/v6.4.5.html)

编辑: 输出文件后尝试以下操作以替换换行符(参考:link):

Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\out.txt", ForReading)

strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, chr(10), chr(13) & chr(10))

Set objFile = objFSO.OpenTextFile("C:\out.txt", ForWriting)
objFile.WriteLine strNewText
objFile.Close

【讨论】:

  • 请举个例子?
  • 顺便说一句,如果您在 *nix 和 windows 之间使用大量文件,notepadd++ 是一个救命稻草,(与普通记事本不同,只显示换行符,就像换行一样)。跨度>
  • 我用你的代码更新了我的脚本,但文件仍然只有一行 -:( [我使用了 chr(10) .....
  • 我刚刚意识到我切换了 10 和 13 chr。我已经更新了答案,先将它们切换到 13,然后再切换到 10。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 2018-08-02
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
相关资源
最近更新 更多