0

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

我的 VB 脚本我将 Linux 机器中的 /etc/hosts 文件打印到 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 脚本中修复什么以便打印正确的主机文件(逐行)而不是一长行?

4

1 回答 1

2

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

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

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

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
于 2013-09-01T20:02:59.217 回答