Возврат каретки VBScript

Я пишу следующий сценарий VB, чтобы запускать команды из WIN XP на компьютере с Linux и перенаправлять команду вывода в файл 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, чтобы напечатать правильный файл hosts (строка за строкой), а не как одну длинную строку?


person maihabunash    schedule 01.09.2013    source источник
comment
возможный дубликат VB sciprt + как перенаправить вывод из окна CMD в файл   -  person Ansgar Wiechers    schedule 02.09.2013


Ответы (1)


Попробуйте заменить lf (перевод строки) на lf и cr (возврат каретки). В 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
person AlexT82    schedule 01.09.2013
comment
пожалуйста, дайте мне пример? - person maihabunash; 02.09.2013
comment
Кстати, если вы используете много файлов между * nix и windows, notepadd ++ спасает жизнь (показывая только переводы строки уже как новую строку, в отличие от обычного блокнота). - person AlexT82; 02.09.2013
comment
Я обновляю свой скрипт вашим кодом, но в файле все еще есть только одна строка - :( [ Я использовал chr (10) ..... - person maihabunash; 02.09.2013
comment
Я только что понял, что поменял местами 10 и 13 часов. Я обновил ответ, чтобы сначала переключить их на 13, а затем на 10. - person AlexT82; 02.09.2013