私はの機能を複製しようとしています cat
Unixでコマンド。
両方のファイルを明示的に変数に読み込み、変数を連結して、連結された変数を書き出すという解決策は避けたいです。
私はの機能を複製しようとしています cat
Unixでコマンド。
両方のファイルを明示的に変数に読み込み、変数を連結して、連結された変数を書き出すという解決策は避けたいです。
回答:
単純に使用できますcat example1.txt, example2.txt | sc examples.txt
。このスタイルで2つ以上のファイルを確実に連結することもできます。さらに、ファイルの名前が同じであれば、次のように使用できます。
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
(ロシア語の1251などの番号はv6.2以降でサポートされています)
Get-Content my.bin -Raw | Set-Content my.bin -NoNewline
変更されませんmy.bin
。PowerShellが独自のCR / LFバイトを追加するの-Raw
を-NoNewline
防ぎながら、CR / LFバイトを保持します。
使用しないでください>
。それは文字エンコーディングを台無しにします。使用する:
Get-Content files.* | Set-Content newfile.file
cat
のエイリアスですGet-Content
。
ÿþ
あるものが取得されていFF FE
ました>
。
ではcmd
、これを行うことができます:
copy one.txt+two.txt+three.txt four.txt
PowerShellでは、次のようになります。
cmd /c copy one.txt+two.txt+three.txt four.txt
PowerShellの方法はgcを使用することですが、上記は特に大きなファイルの場合はかなり高速になります。また、スイッチを使用して、非ASCIIファイルでも使用できます/B
。
Add-Contentコマンドレットを使用できます。最初のファイルのコンテンツを取得しないので、他のソリューションより少し速いかもしれません。
gc .\file2.txt| Add-Content -Path .\file1.txt
gc
指しますか?
gc
Get-Content
コマンドプロンプトでファイルを連結するには、
type file1.txt file2.txt file3.txt > files.txt
PowerShellはtype
コマンドをGet-Content
に変換します。type
つまり、Get-Content
コマンドはファイルを区切るためにコンマを必要とするため、PowerShellでコマンドを使用するとエラーが発生します。PowerShellの同じコマンドは
Get-Content file1.txt,file2.txt,file3.txt | Set-Content files.txt
私が使用した:
Get-Content c:\FileToAppend_*.log | Out-File -FilePath C:\DestinationFile.log
-Encoding ASCII -Append
これで結構です。ASCIIエンコーディングを追加して、Notepad ++が明示的なエンコーディングなしで表示していたNUL文字を削除しました。
次のようなことができます:
get-content input_file1 > output_file
get-content input_file2 >> output_file
どこに>
「アウト・ファイル」の別名がある、と>>「アウト・ファイル-append」の別名です。
他のほとんどの返信では、(パイプ処理のために)形式が間違っていることが多いため、最も安全な方法は次のとおりです。
add-content $YourMasterFile -value (get-content $SomeAdditionalFile)
$ SomeAdditionalFileの内容を変数に読み込まないようにしたかったのですが、たとえば改行の書式を保存するために、それを行わない適切な方法はないと思います。
回避策は、$ SomeAdditionalFileを1行ずつループし、それを$ YourMasterFileにパイプすることです。ただし、これは過度にリソースを消費します。