На машине с Windows я получаю эту ошибку
'touch' не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
когда я следую инструкциям :
touch index.html app.js style.css
Есть ли в Windows эквивалент использования «прикосновения»? Нужно ли мне создавать эти файлы вручную (и изменять их, чтобы изменить метку времени), чтобы реализовать такую команду? Это не кажется очень ... узловатым ...
touch
. Другое обсуждение здесь: superuser.com/questions/10426/… и библиотека Cygwin - это общий набор инструментов команд Unix в Windows.touch
для создания пустого файла с помощью PowerShell?Ответы:
в типе окна cmd:
Это создаст 0 байтов в файле your_file.txt.
Другой способ сделать это - использовать команду echo :
эхо. - создаст файл с одной пустой строкой.
Отредактировано 01.04.2019:
Если вам нужно сохранить содержимое файла, используйте >> вместо>
пример
Отредактировано 07.04.2020
Вы также можете использовать команду вызова .
Пример:
источник
access denied
в консоли. Второй вариант отлично работает!>>
первого ничего не делает, второе добавляет строку в конец файла. Правильный ответ: superuser.com/questions/10426/…Windows изначально не включает
touch
команду.Вы можете использовать любую из доступных общедоступных версий или собственную версию. Сохраните этот код как
touch.cmd
и поместите его где-нибудь на своем пути@echo off setlocal enableextensions disabledelayedexpansion (for %%a in (%*) do if exist "%%~a" ( pushd "%%~dpa" && ( copy /b "%%~nxa"+,, & popd ) ) else ( type nul > "%%~fa" )) >nul 2>&1
Он будет перебирать этот список аргументов и для каждого элемента, если он существует, обновлять временную метку файла, в противном случае создавать его.
источник
Вы можете использовать эту команду: ECHO >> filename.txt
он создаст файл с заданным расширением в текущей папке.
ОБНОВИТЬ:
для использования пустого файла: скопируйте NUL filename.txt
источник
type NUL > filename
(создает файл размером 0 байт)type NUL >> filename
Ответ неверный, он работает только тогда, когда файл не существует. Если файл существует, использование первого ничего не дает, а второе добавляет строку в конец файла.
Правильный ответ:
Я нашел его здесь: /superuser/10426/windows-equivalent-of-the-linux-command-touch/764721#764721
источник
Используйте следующую команду в командной строке:
Информация о параметрах выглядит следующим образом:
fsutil - Утилита файловой системы (исполняемый файл, который вы запускаете)
file - запускает действие файла
createnew - действие, которое нужно выполнить (создать новый файл)
filename - будет буквально имя файла
requiredSize - выделит размер файла в байтах в созданном файле
источник
NULL
s ... странно ... так что просто используйте 0 ... генерирует ошибку, если вы пропустите requiredSize .. .Я удивлен, как много здесь неправильных ответов . Ничего не эхо в файле заполнит файл чем-то вроде
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}
источник
fsutil file CreateNew FileName.FileExtension 0
наcopy NUL Filename.FileExtension
, поскольку последний короче и делает то же самое.copy
более ,fsutil
но это было какое - то время ... Я уверен , что, как я даже узнал оfsutil
ха - ха! Я попытаюсь понять, почему ...В Windows Power Shell вы можете использовать следующую команду:
или
источник
'New-Item' is not recognized as an internal or external command
Вы можете воспроизвести функциональность касания с помощью следующей команды:
Это пытается выполнить вызываемую программу
$
, но если$
она не существует (или не является исполняемым файлом, который производит вывод), то вывод не производится. По сути, это взлом функциональности, однако вы получите следующее сообщение об ошибке:Если вам не нужно сообщение об ошибке, вы можете сделать одно из двух:
Или:
Команда
type
пытается отобразить содержимое nul, которое ничего не делает, кроме как возвращает EOF (конец файла) при чтении.2>nul
отправляет ошибочный вывод (вывод 2) в nul (который игнорирует весь ввод при записи). Очевидно, что вторая команда (с2>nul
) становится избыточной из-за этойtype
команды, поскольку ее быстрее вводить. Но, по крайней мере, теперь у вас есть возможность и знания.источник
%ERRORLEVEL%
всегда устанавливается ненулевое значение. Вы можете решить эту проблему, добавив noop|| cd.
, но это всегда устанавливает ошибку в 0, что может быть не тем, что вам нужно, если "касание" не работает.Для эмуляции команды Touch в Unix / Mac OS X в терминале Windows Powershell
type
неecho
требуется никаких команд . Просто используйте следующее сокращение:Это создаст пустой файл с именем «имя файла» в вашем текущем местоположении. Используйте любое расширение имени файла, которое может вам понадобиться, например .txt.
Источник: /superuser/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell (см. Комментарии)
источник
echo
$null > filename
отправляете этот пустой вывод в filename (если вы уловили мой дрейф).echo
в стандартном терминале командной строки (cmd), который вам нуженecho
. Извините за путаницу.как уже упоминалось
это может быть любой файл с любым расширением, затем выполните
это откроет ваш файл в редакторе блокнота
источник
Вы также можете использовать copy con [filename] в командном окне Windows (cmd.exe):
Это создаст файл с именем
yourfile.txt
в локальном каталоге.источник
Я использую
cmder
(эмулятор командной строки)Он позволяет запускать все команды Linux на машине Windows.
Его можно скачать с https://cmder.net/
мне это и вправду нравится
источник
Из терминала Visual Code Studio в Windows 10 у меня сработало следующее, чтобы создать новый файл:
источник
Предполагая, что файл существует, и вам просто нужно обновить метку времени.
источник
Если на вашем компьютере установлен Cygwin , вы можете просто использовать прилагаемый исполняемый файл для сенсорного ввода (также через командную строку Windows):
источник
Как указывает Рагхувир в своем ответе ,
ni
это псевдоним PowerShell дляNew-Item
, поэтому вы можете создавать файлы из командной строки PowerShell, используяni
вместо сенсорного ввода.Если вы предпочитаете печатать
touch
вместоni
, вы можете установитьtouch
псевдоним дляNew-Item
командлета PowerShell .Создание сенсорной команды в Windows PowerShell:
В командной строке PowerShell определите новый псевдоним.
Теперь сенсорная команда работает почти так же, как вы ожидаете. Единственная разница в том, что вам нужно разделить список файлов запятыми.
Обратите внимание, что это устанавливает только псевдоним для PowerShell. Если PowerShell вам не подходит, вы можете настроить WSL или использовать bash для Windows.
К сожалению, псевдоним будет забыт, как только вы завершите сеанс PowerShell. Чтобы сделать псевдоним постоянным, вы должны добавить его в свой профиль пользователя PowerShell.
В командной строке PowerShell:
Добавьте определение псевдонима в свой профиль и сохраните.
источник
Для очень простой версии,
touch
которая в основном использовалась бы для создания 0-байтового файла в текущем каталоге, альтернативой было бы созданиеtouch.bat
файла и либо добавление его%Path%
вC:\Windows\System32
каталог, либо его копирование в каталог, например:touch.bat
Создание одного файла
Создание нескольких файлов
Также
источник
Легко, пример с txt файлом
источник
$null
в файл.Да, вы можете использовать Node for Touch, я просто использую его, и он отлично работает в Windows Cmd или gitbash
источник
[cmd]
, и это означает, что OP хочет получить ответ, который работает для CMD "из коробки", что означает отсутствие утилит командной строки, которые не были бы упакованы при установке Windows по умолчанию. Это исключает практически все языки сценариев, даже встроенные языки сценариев Windows, такие как CScript, WScript и PowerShell. Дело не в том, что он работает в среде CMD, а в том, что это возможно для всех, у кого есть доступ к CMD, не считая проблем с разрешениями.