Sembra che un sacco di risposte qui non tengano conto della codifica del file.
Mi sono appena imbattuto in questo problema, per varie altre ragioni, ma
echo $null > $file
$null > $file
producono entrambi un file UTF-16-LE, mentre
New-Item $file -type file
produce un file UTF-8.
Per qualche ragione fc > $file
e fc >> $file
, sembrano anch'essi produrre file UTF-8.
Out-File $file -encoding utf8
vi dà un file UTF-8-BOM, mentre
Out-File $file -encoding ascii
vi dà un file UTF-8. Altre codifiche valide (ma non testate) che Out-File supporta sono: [[-Encoding] {unknown | string | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | default | oem}]. Puoi anche inviare roba all'Out-File per dare al file dei dati di testo da memorizzare, e anche un flag -append. Per esempio:
echo $null | Out-File .\stuff.txt -Encoding ascii -Append
questo esempio non aggiorna il timestamp per qualche motivo, ma questo lo fa:
echo foo | Out-File .\stuff.txt -Encoding ascii -Append
Anche se ha l'effetto collaterale di aggiungere “foo” alla fine del file.
Se non siete sicuri di quale codifica avete, ho scoperto che VS-Code ha una caratteristica carina dove nell'angolo in basso a destra dice qual è la codifica. Penso che anche Notepad++ abbia una funzione simile.