Parece que un montón de respuestas aquí no tienen en cuenta la codificación del archivo.
Acabo de encontrarme con este problema, por varias otras razones, pero
echo $null > $file
$null > $file
ambos producen un archivo UTF-16-LE, mientras que
New-Item $file -type file
produce un archivo UTF-8.
Por alguna razón fc > $file
y fc >> $file
, también parecen producir archivos UTF-8.
Out-File $file -encoding utf8
te da un archivo UTF-8-BOM, mientras que
Out-File $file -encoding ascii
te da un archivo UTF-8. Otras codificaciones válidas (pero no probadas) que soporta Out-File son: [[-Encoding] {desconocida | cadena | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | por defecto | oem}]. También puede canalizar cosas a Out-File para dar al archivo algunos datos de texto para almacenar, y también una bandera -append. Por ejemplo:
echo $null | Out-File .\stuff.txt -Encoding ascii -Append
este ejemplo no actualiza la marca de tiempo por alguna razón, pero este otro sí:
echo foo | Out-File .\stuff.txt -Encoding ascii -Append
Aunque tiene el efecto secundario de añadir “foo” al final del archivo.
Si no estás seguro de la codificación que tienes, he descubierto que VS-Code tiene una característica ingeniosa donde en la esquina inferior derecha dice cuál es la codificación. Creo que Notepad++ también tiene una función similar.