Il semble qu'un grand nombre de réponses ici ne tiennent pas compte de l'encodage des fichiers.
Je viens de rencontrer ce problème, pour diverses autres raisons, mais
echo $null > $file
$null > $file
produisent tous deux un fichier UTF-16-LE, tandis que
New-Item $file -type file
produit un fichier UTF-8.
Pour une raison quelconque fc > $file
y fc >> $file
semblent également produire des fichiers UTF-8.
Out-File $file -encoding utf8
vous donne un fichier UTF-8-BOM, alors que
Out-File $file -encoding ascii
vous donne un fichier UTF-8. D'autres encodages valides (mais non testés) que Out-File supporte sont : [[-Encoding] {inconnu | string | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | default | oem}]. Vous pouvez aussi envoyer des données à Out-File pour donner au fichier des données textuelles à stocker, ainsi qu'un drapeau -append. Par exemple :
echo $null | Out-File .\stuff.txt -Encoding ascii -Append
cet exemple ne met pas à jour l'horodatage pour une raison quelconque, mais celui-ci le fait :
echo foo | Out-File .\stuff.txt -Encoding ascii -Append
Bien que cela ait l'effet secondaire d'ajouter "foo" à la fin du fichier.
Si vous n'êtes pas sûr de l'encodage que vous avez, j'ai trouvé que VS-Code a une fonction très pratique qui indique l'encodage dans le coin inférieur droit. Je pense que Notepad++ a aussi une fonction similaire.
1 votes
Voir Version Windows de la commande Touch d'Unix & L'équivalent Windows de la commande Linux "touch" ?
1 votes
Merci. Je les ai regardés, mais la plupart des réponses se concentrent sur l'invite de commande. J'aimerais avoir une solution PowerShell qui ne me demande pas d'installer de nouvelles applications.
0 votes
Downvoted la question - les deux fonctionnalités ne sont que quelques lignes de code de plus, il suffit d'implémenter les deux, pas seulement la moitié, surtout quand la moitié manquante de l'autre commande est si dangereuse.
0 votes
@yzorg : Que voulez-vous dire par les deux fonctionnalités ? Je demandais seulement comment créer un fichier vide dans PS de la même manière que vous pouvez le faire avec la fonction
touch
dans Linux.0 votes
@jsalonen Utilisez *nix
touch
sur un fichier existant, il mettra à jour le dernier temps d'écriture sans modifier le fichier, voir les liens de @amiregelz. Cette question a un classement google élevé pourpowershell touch
je voulais alerter les copieurs/colleristes que cette seule moitié peut détruire des données, alors que *nix touch ne le fait pas. Voir la réponse de @LittleBoyLost qui gère le cas où le fichier existe déjà.0 votes
@jsalonen Si vous reformulez la question en "comment créer un fichier vide dans powershell", j'enlèverai mon downvote, mais je laisserai *nix
touch
de la commande. :)0 votes
@LuuVinhPhúc J'ai clarifié ma question. Je ne cherche pas l'équivalent complet de Touch, juste le comportement correspondant pour la création de fichiers vides.
0 votes
Une implémentation idiomatique de PowerShell dont les fonctionnalités sont presque équivalentes à celles d'Unix.
touch
utilitaire : stackoverflow.com/a/58756360/45375