VBScript回车


0

我编写以下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脚本中建议我需要修复的内容,以便打印正确的主机文件(逐行)而不是一条长行?


你真的应该解决问题然后你会发现linux中的字母和新行的文件小于后者的文件和windows中的新行。事实上,如果在Windows中你回显一个> file1然后你看到文件是3个字节,你可以问这个问题 - 为什么 - 。并找出原因。使用CRLF的Windows是众所周知的。如果你读过关于回车的话,你可能会学习windows使用它而linux只使用LF。我想人们应该碰到这个事实几十次。
barlop 2013年

Answers:


0

Linux系统使用换行符进行换行,而Windows使用回车符+换行符。 http://en.wikipedia.org/wiki/Newline

在你的情况下,我将通过sed运行PATH,用CRLF替换LF

Const PATH = cat /etc/hosts | sed -e 's/$/\r/' 

http://en.wikipedia.org/wiki/Unix2dos


我还没有读完他的整个问题,令人震惊的是,一个人(显然是提问者)可以知道vbscript以及hosts文件在linux中的位置,而不知道windows中的CRLF和linux中的LF。但无论如何,你写“用CRLF取代LF的”然后你写's / $ / \ r /'那个替代品有什么用处 - 你说的是把CR放在最后。任何操作系统都不使用它。它是\ r \ n(CRLF)或它是\ n(LF)。永远不只是\ r \ n(CR)。而你的sed替换只是在那里放一个CR。
barlop 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.