我正在尝试cat
在Unix中复制命令的功能。
我想避免这样的解决方案:将两个文件显式地读入变量,将变量串联在一起,然后写出串联变量。
我正在尝试cat
在Unix中复制命令的功能。
我想避免这样的解决方案:将两个文件显式地读入变量,将变量串联在一起,然后写出串联变量。
Answers:
您可以简单地使用cat example1.txt, example2.txt | sc examples.txt
。您当然也可以使用这种样式连接两个以上的文件。另外,如果文件的命名类似,则可以使用:
cat example*.txt | sc allexamples.txt
该cat
是一个别名Get-Content
,并且sc
是一个别名Set-Content
。
注意1:请注意后一种方法-如果尝试输出到examples.txt
(或与模式匹配的类似内容),PowerShell将陷入无限循环!(我刚刚测试过)。
注意2:输出到的文件>
不会保留字符编码!这就是为什么建议使用Set-Content
(sc
)的原因。
Set-Content
使用国家代码页(例如Windows-1252为英文)。如果源文件包含其他编码(例如Windows-1251或UTF8),则必须设置正确的编码sc file.txt -Encoding UTF8
(自v6.2开始支持俄语的数字,例如1251)
Get-Content my.bin -Raw | Set-Content my.bin -NoNewline
不会更改my.bin
。-Raw
保留任何CR / LF字节,同时-NoNewline
阻止PowerShell添加自己的CR / LF字节。
不要使用>
; 它弄乱了字符编码。用:
Get-Content files.* | Set-Content newfile.file
cat
是的别名Get-Content
。
ÿþ
它正在FF FE
连接文件的开头>
。
您可以使用Add-Content cmdlet。也许它比其他解决方案要快一点,因为我没有检索第一个文件的内容。
gc .\file2.txt| Add-Content -Path .\file1.txt
gc
参考?
gc
是Get-Content