【问题标题】:Could Not find windows command to convert dos file to unix找不到将dos文件转换为unix的windows命令
【发布时间】:2016-03-15 17:51:33
【问题描述】:

我被卡住的情况是我有一个普通的 Windows 文本文件 'command.txt',我正在使用来自本地计算机 (windows) 的远程 (unix) 服务器上的“pscp”命令从cmd

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

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

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

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

【问题讨论】:

  • 我知道的解决方案是使用dos2unix,但我不想使用它。 为什么?
  • 因为它在 Linux 上运行,并且我正在尝试持续部署该任务是其中的一部分,所以每个任务都必须在本地机器(即 windows)上执行。

标签: windows unix text-files file-conversion eol


【解决方案1】:

您在 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      有什么方法可以持久化格式的变化吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-27
        相关资源
        最近更新 更多