Я удивлен, как много здесь неправильных ответов . Ничего не эхо в файле заполнит файл чем-то вроде ECHO is ON
, а попытка эха $nul
в файл буквально поместит его $nul
в файл. Кроме того, для PowerShell эхо $null
в файл на самом деле не создает файл размером 0 КБ, а что-то закодированное как UCS-2 LE BOM
, что может стать беспорядочным, если вам нужно убедиться, что ваши файлы не имеют отметки порядка байтов.
После тестирования всех ответов здесь и ссылки на некоторые похожие, я могу гарантировать, что они будут работать для каждой консоли. Просто перейдите FileName.FileExtension
на полный или относительный путь к файлу, который вы хотите touch
; Спасибо Кейту Расселу за COPY NUL FILE.EXT
обновление:
CMD с обновлениями меток времени
copy NUL FileName.FileExtension
Это создаст новый файл с именем, которое вы поместили, а не FileName.FileExtension
размером 0 байт. Если файл уже существует, он скопирует себя на место, чтобы обновить временную метку. Я бы сказал, что это скорее обходной путь, чем функциональность 1: 1, touch
но я не знаю никаких встроенных инструментов для CMD, которые могут выполнять обновление метки времени файла без изменения какого-либо другого его содержимого.
CMD без обновлений меток времени
if not exist FileName.FileExtension copy NUL FileName.FileExtension
Powershell с обновлениями меток времени
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}
Да, он будет работать в консоли как однострочный; нет необходимости помещать его в файл сценария PowerShell.
PowerShell без обновлений меток времени
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}
touch
. Другое обсуждение здесь: superuser.com/questions/10426/… и библиотека Cygwin - это общий набор инструментов команд Unix в Windows.