私はの機能を複製しようとしています catUnixでコマンド。
両方のファイルを明示的に変数に読み込み、変数を連結して、連結された変数を書き出すという解決策は避けたいです。
私はの機能を複製しようとしています catUnixでコマンド。
両方のファイルを明示的に変数に読み込み、変数を連結して、連結された変数を書き出すという解決策は避けたいです。
回答:
単純に使用できます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指しますか?
gcGet-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にパイプすることです。ただし、これは過度にリソースを消費します。