VBScript Carriage Return

Пиша следния 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 + how redirect output from CMD window към файл   -  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 chr. Актуализирах отговора, за да ги превключа първо на 13 и след това на 10. - person AlexT82; 02.09.2013