gpt4 book ai didi

windows - 通过 Powershell 或 Batch 将文件从 Windows 转换为 UNIX

转载 作者:可可西里 更新时间:2023-11-01 13:28:04 24 4
gpt4 key购买 nike

我有一个批处理脚本,提示用户进行一些输入,然后输出我在 AIX 环境中使用的几个文件。这些文件需要采用 UNIX 格式(我认为是 UTF8),但我正在寻找以最简单的方式执行此操作的一些方向。

我不喜欢下载额外的软件包; Cygwin 或 GnuWin32。如果可能的话,我不介意对此进行编码,我的编码选项是 Batch、Powershell 和 VBS。有谁知道这样做的方法吗?

或者,我可以使用 Batch 创建文件并调用 Powershell 脚本来修改这些文件吗?

这里的想法是提示用户输入一些信息,然后我输出一个标准文件,这些文件基本上是 AIX 中的作业提示答案。我最初使用 Batch,因为我不知道我会遇到这个问题,但我有点倾向于在 Powershell 中重做这个。因为我在另一个论坛上找到了一些可以进行转换的代码(如下)。

% foreach($i in ls -name DIR/*.txt) { \
get-content DIR/$i | \
out-file -encoding utf8 -filepath DIR2/$i \
}

寻找一些方向或一些意见。

最佳答案

如果没有批处理文件中的外部工具,您将无法执行此操作。

如果您只需要文件编码,那么您提供的代码片段应该可以使用。如果您想内联转换文件(而不是将它们写入另一个地方),您可以这样做

Get-ChildItem *.txt | ForEach-Object { (Get-Content $_) | Out-File -Encoding UTF8 $_ }

(Get-Content 周围的括号很重要)但是,这将以 UTF-8 格式写入文件,开头带有签名 (U+FEFF),某些 Unix 工具不接受(即使它在技术上是合法的,但不鼓励使用)。

然后就是Windows和Unix换行符不一样的问题。 Unix 仅使用 U+000A (LF) 而 Windows 使用两个字符:U+000D U+000A (CR+LF)。所以理想情况下,您也可以转换换行符。但这变得有点复杂:

Get-ChildItem *.txt | ForEach-Object {
# get the contents and replace line breaks by U+000A
$contents = [IO.File]::ReadAllText($_) -replace "`r`n?", "`n"
# create UTF-8 encoding without signature
$utf8 = New-Object System.Text.UTF8Encoding $false
# write the text back
[IO.File]::WriteAllText($_, $contents, $utf8)
}

关于windows - 通过 Powershell 或 Batch 将文件从 Windows 转换为 UNIX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852682/

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