我编写以下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脚本中建议我需要修复的内容,以便打印正确的主机文件(逐行)而不是一条长行?
答案 0 :(得分:2)
尝试为lf和cr(回车)替换lf(换行)。 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