2016-03-15 105 views
0

我卡住的場景是我有一個正常的Windows文本文件'command.txt',我正在使用'pscp在本地機器(windows)上遠程複製(unix)服務器'從cmd的命令。找不到windows命令將dos文件轉換爲unix

該文件包含一些在遠程服務器上運行所需的unix命令。複製成功完成,但它被複製爲dos文件。這就是爲什麼,當我試圖用「砰砰」的運行從我的本地機器command.txt文件:

plink -pw password [email protected] bash -m /location of command.txt on the server/command.txt 

這是無法執行command.txt。所以,我需要一些Windows命令或可能是一些pscp選項將我的文件轉換爲unix文本文件,然後再複製到遠程服務器上。

我知道的解決方案是使用dos2unix,但我不想使用它。

+1

*我知道的解決方案是使用dos2unix,但我不想使用它。*爲什麼? –

+0

,因爲它在Linux上運行,而且我試圖做連續部署,而這個任務是其中的一部分,所以每個任務都必須在本地機器上執行,即Windows。 – prachi309

回答

2

您在Windows中生成的文本文件中似乎遇到LF(換行符)字符問題。如果文件不是很大,你可以使用VBScript的,即(這是在所有的Windows盒,因此無需安裝額外的工具),以去除LF字符:上述過程in.txt文件到了

Dim objFSO 
Dim objOutput 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objOutput = objFSO.CreateTextFile("out.txt") 
arrData = Split(objFSO.OpenTextFile("in.txt").ReadAll, vbLf) 

For Each Item In arrData 
    strData = strData & Replace(Item, vbLf, "") 
Next 
objOutput.WriteLine strData 
objOutput.Close 

腳本呈現。 txt文件,但可以很容易地擴展到從命令行接受文件名。

可以使用cscript命令執行上面的腳本:

cscript rem.vbs 
1

您可以在Windows上運行DOS2UNIX的了。 Dos2unix不限於Linux。它運行在許多平臺上,包括Windows。你只需要安裝它。

0

謝謝你的回覆。 事情是,我必須執行這個任務只與提供給我的環境是Windows,而不需要下載新的功能(我知道它很愚蠢,但我沒有其他選擇)。我找到的一個解決方案是在記事本++中打開文件,轉到格式選項卡並選擇「轉換爲UNIX格式」。它工作正常,但只要我在其他位置複製文件,它的格式會再次恢復爲Windows格式。

是否有任何方法來保持格式的變化?