gpt4 book ai didi

powershell - Unix换行符到Windows换行符(在Windows上)

转载 作者:行者123 更新时间:2023-12-03 09:41:58 24 4
gpt4 key购买 nike

Windows中是否有一种方法(例如PowerShell或工具)可以递归目录并将所有Unix文件转换为Windows文件。
我对使用PowerShell中至少检测Unix文件的方法感到非常满意。
对单个文件执行此操作很容易,但是我需要的是可扩展性更高的文件(因此倾向于使用PowerShellish解决方案)。

最佳答案

如果您有兴趣,这是纯PowerShell方式。

查找至少有一个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-Object。除此之外,您还可以在管道开始时进行所需的任何过滤。

关于powershell - Unix换行符到Windows换行符(在Windows上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/724083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com