有谁知道的一种方式(说PowerShell或工具)在Windows中,可以递归通过目录和任何UNIX文件转换为Windows文件。

我会与Powershell的一种方法,至少检测一个UNIX文件完全满意。

这很容易为一个单一的文件做到这一点,但东西有点更具可扩展性(因此向Powershellish解决方案倾斜)。

在我
有帮助吗?

解决方案

下面是纯PowerShell的方式,如果你有兴趣。

查找与截至ATLEAST一个UNIX线(PowerShell的V1)文件:

dir * -inc *.txt | %{ if (gc $_.FullName -delim "`0" | Select-String "[^`r]`n") {$_} }

下面是你如何寻找和隐蔽UNIX行结束到Windows行尾。需要注意的重要一点是,结束一个额外的行(\ r \ n)的将被添加到该文件的末尾如果没有已经在最后结束的行。如果你真的不希望出现这种情况,我会发布的,你如何避免它的一个示例(这是相对比较复杂)。

Get-ChildItem * -Include *.txt | ForEach-Object {
    ## If contains UNIX line endings, replace with Windows line endings
    if (Get-Content $_.FullName -Delimiter "`0" | Select-String "[^`r]`n")
    {
        $content = Get-Content $_.FullName
        $content | Set-Content $_.FullName
    }
}

在上述工程因为PowerShell的将自动分割上\ n中的内容(滴加\ R如果存在的话),然后添加\ r \ n时它写入(在这种情况下的线)到文件中的每个事物。这就是为什么你总是在文件的结尾结束的行结束了。

另外,我写上面的代码,使得其仅修改它需要的文件。如果你不关心你可以删除if语句。哦,确保只有文件获取到的foreach对象。除此之外,你可以做任何过滤你想在这条管道的起点。

其他提示

有是DOS2UNIX的和unix2dos在 Cygwin的

这似乎为我工作。

Get-Content Unix.txt | Out-File Dos.txt

VIM ,打开您的文件和问题

:se fileformat=dos|up

批量为多个文件(在C *所有.txt文件:\ TMP - 递归):

:args C:\tmp\**\*.txt
:argdo se fileformat=dos|up

您可以使用Visual Studio。文件 - >高级保存选项...

如果Cygwin的是不适合你,也有Windows下unix2dos许多独立的可执行文件,如果你谷歌周围,或者你可以自己写一个,看我类似(转换方向相反)问题的here

我花了6小时昨天和今天测试的规模与10,000个文件在一个循环上面给出的代码,其中不乏> 50KB。底线,PowerShell代码是非常低效/慢/不可用大文件和大量文件。它也不会保留BOM字节。我发现unix2dos 7.2.3是最快的,最实用的解决方案。希望这可以帮助别人,为他们节省时间。

打开在写字板Unix行结尾的一个文件,并保存它会重写所有行尾为DOS。有点费力了大量文件,但它在一段时间的作品不够好几个文件,每一次。

它为我的作品:

 Get-ChildItem -Recurse -File | % { $tmp = Get-Content $_; $tmp | Out-File "$_" -Encoding UTF8 }

这个怎么样(具有负回顾后)。如果没有-nonewline,设置内容提出一个额外的`r`n在底部。随着括号,您可以修改同一个文件。

function unix2dos {
    (Get-Content -raw $args[0]) -replace "(?<!`r)`n","`r`n" | 
    set-content -nonewline $args[0]
}

反向会是这样,窗口UNIX文本。

function dos2unix {
    (Get-Content -raw $args[0]) -replace "`r`n","`n" | 
    set-content -nonewline $args[0]
}

示例:

unix2dos file.txt
dos2unix file.txt

如果你有emacs的,可以与ESC-X hexl模式检查。记事本将无法正确显示UNIX文本。我不得不指定设定内容的路径,因为-replace擦除pspath。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top