Я здивований, скільки відповідей тут просто невірно . Ехо, що нічого не буде у файлі, заповнить файл чимось на кшталт ECHO is ON
, а спроба відлуння $nul
у файл буквально розміститься $nul
у файлі. Додатково для PowerShell, повторення $null
у файл насправді не зробить 0kb файл, але щось закодоване як UCS-2 LE BOM
, що може стати безладним, якщо вам потрібно переконатися, що ваші файли не мають позначки порядку байтів.
Після тестування всіх відповідей тут і посилаючись на деякі подібні, я можу гарантувати, що вони працюватимуть на оболонці консолі. Просто змініть FileName.FileExtension
повний або відносний шлях до файлу, який ви хочете touch
; дякую Кіту Расселу за COPY NUL FILE.EXT
оновлення:
Оновлення CMD w / Timestamp
copy NUL FileName.FileExtension
Це створить новий файл з ім'ям, що ви розмістили, замість FileName.FileExtension
розміру 0 байт. Якщо файл вже існує, він в основному копіює себе на місці для оновлення часової позначки. Я б сказав, що це більше обхід, ніж функціонал 1: 1, touch
але я не знаю жодних вбудованих інструментів для CMD, які можуть виконати оновлення часової позначки файлу без зміни будь-якого іншого вмісту.
CMD без оновлення Timestamp
if not exist FileName.FileExtension copy NUL FileName.FileExtension
Powershell w / Оновлення Timestamp
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.