mer*_*011 98 powershell powershell-2.0
我试图在Unix中复制"cat"命令的功能.
我想避免解决方案,我明确地将两个文件读入变量,将变量连接在一起,然后写出连接变量.
Smi*_*Smi 142
你可以简单地使用cat example1.txt, example2.txt | sc examples.txt.您也可以使用此样式连接两个以上的文件.另外,如果文件名称相似,您可以使用:
cat example*.txt | sc allexamples.txt
Run Code Online (Sandbox Code Playgroud)
它cat是别名Get-Content,sc是别名Set-Content.
注意1:小心后一种方法 - 如果你尝试输出examples.txt(或类似的模式匹配),PowerShell将进入无限循环!(我刚试过这个).
注意2:输出到文件时>不保留字符编码!这就是建议使用using Set-Content(sc)的原因.
小智 56
不要使用>...... >; 它弄乱了字符编码.使用:
Get-Content files.* | Set-Content newfile.file
Run Code Online (Sandbox Code Playgroud)
我花了好几个小时才找到它.
man*_*lds 13
在cmd,您可以这样做:
copy one.txt+two.txt+three.txt four.txt
Run Code Online (Sandbox Code Playgroud)
在PowerShell中,这将是:
cmd /c copy one.txt+two.txt+three.txt four.txt
Run Code Online (Sandbox Code Playgroud)
虽然PowerShell的方式是使用gc,但上面的速度非常快,特别是对于大文件.并且它也可以使用交换机在非ASCII文件上使用/B.
mjs*_*jsr 12
您可以使用Add-Content cmdlet.也许它比其他解决方案快一点,因为我没有检索第一个文件的内容.
gc .\file2.txt| Add-Content -Path .\file1.txt
Run Code Online (Sandbox Code Playgroud)
我用了:
Get-Content c:\FileToAppend_*.log | Out-File -FilePath C:\DestinationFile.log
-Encoding ASCII -Append
Run Code Online (Sandbox Code Playgroud)
这附加了罚款。我添加了 ASCII 编码来删除 Notepad++ 在没有显式编码的情况下显示的空字符。
要在命令提示符下连接文件,它将是
type file1.txt file2.txt file3.txt > files.txt
Run Code Online (Sandbox Code Playgroud)
PowerShell将type命令转换为Get-Content,这意味着type在PowerShell中使用该命令时会出现错误,因为该Get-Content命令需要用逗号分隔文件。在PowerShell中,相同的命令是
Get-Content file1.txt,file2.txt,file3.txt | Set-Content files.txt
Run Code Online (Sandbox Code Playgroud)
如果您需要按特定参数(例如日期时间)对文件进行排序:
gci *.log | sort LastWriteTime | % {$(Get-Content $_)} | Set-Content result.log
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102807 次 |
| 最近记录: |