找不到将dos文件转换为Unix的Windows命令



我被卡住的情况是我有一个普通的Windows文本文件'command.txt'我正在使用cmd的'pscp'命令从我的本地机器(windows)在远程(unix)服务器上复制该文件。

该文件包含一些需要在远程服务器上运行的unix命令。复制成功完成,但它被复制为 dos 文件。这就是为什么当我尝试使用"plink"从本地计算机运行命令.txt文件时:

plink -pw password user@host bash -m /location of command.txt on the server/command.txt

它无法执行command.txt。因此,我需要一些 windows 命令或可能是一些 pscp 选项来将我的文件转换为 unix 文本文件,然后再将其复制到远程服务器上。

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

您在Windows框上生成的文本文件中的LF(换行)字符似乎有问题。如果文件不大,您可以使用VBScript(它在所有Windows框上,因此无需安装其他工具)来删除LF字符:

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

上面介绍的脚本处理 in.txt 文件进入 out.txt 文件,但可以很容易地扩展以接受来自命令行的文件名。

您可以使用以下命令执行上述脚本cscript

cscript rem.vbs

您也可以在Windows上运行dos2unix。Dos2unix 不仅限于 Linux。它可以在许多平台上运行,包括Windows。您只需要安装它。

感谢您的回复。问题是我必须仅在提供给我的环境(即 Windows)下执行此任务,而无需下载新功能(我知道这很愚蠢,但我别无选择)。我发现的一种解决方案是在记事本++中打开文件,转到格式选项卡并选择"转换为UNIX格式"。它工作正常,但是一旦我将文件复制到其他位置,其格式就会再次恢复为Windows格式。

有什么方法可以保留格式中的更改吗?

最新更新