Dziwi mnie, jak wiele odpowiedzi tutaj jest po prostu błędnych . Echo niczego do pliku wypełni plik czymś podobnym ECHO is ON
, a próba echa $nul
do pliku dosłownie umieści $nul
go w pliku. Dodatkowo w programie PowerShell echo $null
pliku nie spowoduje utworzenia pliku 0kb, ale coś zakodowanego jako UCS-2 LE BOM
, co może być nieporządne, jeśli trzeba się upewnić, że pliki nie mają znaku kolejności bajtów.
Po przetestowaniu wszystkich odpowiedzi tutaj i powołaniu się na podobne, mogę zagwarantować, że będą one działać dla powłoki konsoli. Po prostu zmień FileName.FileExtension
pełną lub względną ścieżkę pliku, który chcesz touch
; dzięki Keith Russell za COPY NUL FILE.EXT
aktualizację:
CMD z aktualizacjami sygnatur czasowych
copy NUL FileName.FileExtension
Spowoduje to utworzenie nowego pliku o nazwie niezależnie od tego, który umieścisz zamiast o FileName.FileExtension
rozmiarze 0 bajtów. Jeśli plik już istnieje, po prostu skopiuje się w miejscu, aby zaktualizować znacznik czasu. Powiedziałbym, że jest to bardziej obejście niż funkcjonalność 1: 1, touch
ale nie znam żadnych wbudowanych narzędzi dla CMD, które mogłyby dokonać aktualizacji sygnatury czasowej pliku bez zmiany jakiejkolwiek innej jego zawartości.
CMD bez aktualizacji sygnatury czasowej
if not exist FileName.FileExtension copy NUL FileName.FileExtension
Powershell z aktualizacjami znaczników czasu
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}
Tak, będzie działać w konsoli jako jednowarstwowy; nie ma potrzeby umieszczania go w pliku skryptu PowerShell.
PowerShell bez aktualizacji znaczników czasu
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}
touch
. Inna dyskusja tutaj: superuser.com/questions/10426/... a biblioteka Cygwin to wspólny zestaw narzędzi poleceń Uniksa w systemie Windows.