J'essaie de comprendre un comportement étrange avec cette applet de commande.
Si j'utilise "Out-File -append Filename.txt" sur un fichier texte que j'ai créé et entré du texte via le menu contextuel de Windows, la chaîne s'ajoutera à la dernière ligne de ce fichier sous la forme d'une série de caractères séparés par des espaces.
Alors:
"This is a test" | out-file -append textfile.txt
Produira: T h i s i s a t e s t
Cela n'arrivera pas si out-file crée le fichier, ou si le fichier texte ne contient pas de texte avant l'ajout. Pourquoi cela arrive-t-il?
Je noterai également que la répétition de la commande s'ajoutera simplement de la même manière à la même ligne. Je suppose qu'il ne reconnaît pas les terminaisons de saut de ligne ou de saut de ligne ou quelque chose en raison d'un encodage modifié?
Out-File
par défaut au codage unicode, c'est pourquoi vous voyez le comportement que vous êtes. Utilisation -Encoding Ascii
pour modifier ce comportement. Dans ton cas
Out-File -Encoding Ascii -append textfile.txt.
Add-Content
utilise Ascii et ajoute également par défaut.
"This is a test" | Add-Content textfile.txt.
Quant au manque de retour à la ligne: vous n'avez pas envoyé de retour à la ligne donc il n'en écrit pas dans le fichier.
Add-Content est par défaut ASCII et ajoutez une nouvelle ligne, mais Add-Content entraîne également des problèmes de fichiers verrouillés.