0

Linux マシンで WIN XP からコマンドを実行し、出力コマンドを out.txt ファイル ( C:\ の下) にリダイレクトするために、次の VB スクリプトを作成します。

私のVBスクリプト/ etc/hostsファイルをLinuxマシンからout.txtファイルに出力します

スクリプトは正常に動作しますが、問題が 1 つあります。

/etc/hosts ファイルがout.txtファイルに出力され、3 行の代わりに 1 つの長い行が出力されました

例: (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

長い 1 行ではなく、正しいホスト ファイルを (1 行ずつ) 出力するために、VB スクリプトで何を修正する必要があるか教えてください。

4

1 に答える 1

2

lf と cr (改行) を lf (改行) に置き換えてみてください。Linux には LF のみがあり、Windows では余分な行を表示するためにキャリッジ リターンも必要です。

または、Notepad++ でファイルを開くと、行が 1 行ずつ印刷されていることがわかります。( http://notepad-plus-plus.org/download/v6.4.5.html )

EDIT:改行を置き換えるためにファイルを出力した後、次のことを試してください(参照:リンク):

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 に答える