J'essaye de reproduire la fonctionnalité de la cat
commande sous Unix.
Je voudrais éviter les solutions où je lis explicitement les deux fichiers dans des variables, concatène les variables ensemble, puis écris la variable concaténée.
la source
J'essaye de reproduire la fonctionnalité de la cat
commande sous Unix.
Je voudrais éviter les solutions où je lis explicitement les deux fichiers dans des variables, concatène les variables ensemble, puis écris la variable concaténée.
Vous pouvez simplement utiliser cat example1.txt, example2.txt | sc examples.txt
. Vous pouvez également concaténer plus de deux fichiers avec ce style. De plus, si les fichiers sont nommés de la même manière, vous pouvez utiliser:
cat example*.txt | sc allexamples.txt
Le cat
est un alias pour Get-Content
et sc
est un alias pour Set-Content
.
Remarque 1 : soyez prudent avec cette dernière méthode - si vous essayez de générer une sortie vers examples.txt
(ou similaire qui correspond au modèle), PowerShell entrera dans une boucle infinie! (Je viens de tester ça).
Remarque 2 : La sortie dans un fichier avec >
ne préserve pas le codage des caractères! C'est pourquoi il est recommandé d' utiliser Set-Content
( sc
).
Set-Content
utilise la page de codes nationale (par exemple Windows-1252 pour l'anglais). Si les fichiers source contiennent un autre codage (par exemple, Windows-1251 ou UTF8), vous devez définir un codage correctsc file.txt -Encoding UTF8
(des nombres tels que 1251 pour le russe sont pris en charge depuis la v6.2)Add-Content
est que si vous exécutez la commande deux fois, le fichier agrégé est deux fois plus long. Un bon remplacement estOut-File
. Exemple iciGet-Content my.bin -Raw | Set-Content my.bin -NoNewline
ne changera pasmy.bin
sauf les horodatages.-Raw
préserve tous les octets CR / LF, tout en-NoNewline
empêchant PowerShell d'ajouter ses propres octets CR / LF.Ne pas utiliser
>
; cela perturbe l'encodage des caractères. Utilisation:la source
cat
est un alias pourGet-Content
.ÿþ
qui estFF FE
au début de mon fichier concaténé lors de l'utilisation>
.Dans
cmd
, vous pouvez faire ceci:Dans PowerShell, ce serait:
Alors que la manière PowerShell serait d'utiliser gc , ce qui précède sera assez rapide, en particulier pour les fichiers volumineux. Et il peut également être utilisé sur des fichiers non ASCII en utilisant le
/B
commutateur.la source
Vous pouvez utiliser l' applet de commande Add-Content . C'est peut-être un peu plus rapide que les autres solutions, car je ne récupère pas le contenu du premier fichier.
la source
gc
référence?gc
est un alias pour Get-ContentPour concater des fichiers dans l'invite de commande, ce serait
PowerShell convertit la
type
commande enGet-Content
, ce qui signifie que vous obtiendrez une erreur lors de l'utilisation de latype
commande dans PowerShell, car laGet-Content
commande nécessite une virgule séparant les fichiers. La même commande dans PowerShell seraitla source
Si vous avez besoin de classer les fichiers par paramètre spécifique (par exemple, date et heure):
la source
J'ai utilisé:
Cette amende ajoutée. J'ai ajouté le codage ASCII pour supprimer les caractères nuls que Notepad ++ montrait sans le codage explicite.
la source
Vous pouvez faire quelque chose comme:
Où
>
est un alias pour "out-file", et >> est un alias pour "out-file -append".la source
Étant donné que la plupart des autres réponses ont souvent une mauvaise mise en forme (en raison de la tuyauterie), la chose la plus sûre à faire est la suivante:
Je sais que vous vouliez éviter de lire le contenu de $ SomeAdditionalFile dans une variable, mais pour enregistrer par exemple votre mise en forme de nouvelle ligne, je ne pense pas qu'il y ait un moyen approprié de le faire sans.
Une solution de contournement serait de parcourir votre $ SomeAdditionalFile ligne par ligne et de le rediriger vers votre $ YourMasterFile. Cependant, cela demande trop de ressources.
la source
Pour conserver l'encodage et les fins de ligne:
Remarque: AFAIR, dont les paramètres ne sont pas pris en charge par les anciens Powershells (<3? <4?)
la source
Je pense que la "façon PowerShell" pourrait être:
la source