我编写了以下 VB 脚本,以便在 Linux 机器上运行来自 WIN XP 的命令并将输出命令重定向到 out.txt 文件(在 C:\ 下)
我的 VB 脚本将 Linux 机器上的 /etc/hosts 文件打印到 out.txt 文件中
脚本运行良好,但我有一个问题:
/etc/hosts 文件打印在输出文件用一行长文件代替三行
例如:(out.txt)
127.0.0.1 localhost 19.20.183.99 MY_IP 10.10.10.10 LOOP
在以下主机文件中打印输出文件
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 脚本中修复什么才能打印正确的主机文件(逐行)而不是一行长文件?
答案1
Linux系统使用Line Feed来换行,而Windows使用Carriage Return + Line Feed。 http://en.wikipedia.org/wiki/Newline
对于你的情况,我会通过 sed 运行 PATH,将 LF 替换为 CRLF
Const PATH = cat /etc/hosts | sed -e 's/$/\r/'