Windows эквивалент "touch" (т.е. Способ node.js для создания index.html)
На машине с Windows я получаю эту ошибку
"touch" не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
когда я следую инструкциям:
touch index.html app.js style.css
Есть ли в Windows эквивалент использования "touch"? Нужно ли создавать эти файлы вручную (и изменять их для изменения метки времени), чтобы реализовать команду такого рода? Это не кажется очень... нод...
Ответы
Ответ 1
в окне типа cmd:
type nul > your_file.txt
Это создаст 0 байтов в файле your_file.txt.
Другой способ сделать это - использовать команду echo:
echo.> your_file.txt
эхо. - создаст файл с одной пустой строкой в нем.
Отредактировано 2019-04-01:
Если вам нужно сохранить содержимое файла, используйте >> вместо>
> Creates a new file
>> Preserves content of the file
пример
type nul >> your_file.txt
Ответ 2
В ОС 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
Он будет перебирать список аргументов, и для каждого элемента, если он существует, обновите временную метку файла, иначе создайте ее.
Ответ 3
Вы можете использовать эту команду: ECHO → filename.txt
он создаст файл с указанным расширением в текущей папке.
UPDATE:
для использования пустого файла: копировать NUL filename.txt
Ответ 4
Ответ неправильный, он работает только тогда, когда файл не существует. Если файл существует, использование первого ничего не дает, второе добавляет строку в конец файла.
Правильный ответ:
copy /b filename.ext +,,
Я нашел это здесь: https://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch/764721#764721
Ответ 5
Используйте следующую команду в командной строке:
fsutil file createnew filename requiredSize
Информация о параметрах:
fsutil - утилита файловой системы (исполняемый файл, который вы используете)
file - запускает действие файла
createnew - действие для выполнения (создать новый файл)
filename - будет буквально именем файла
requiredSize - выделяет размер файла в байтах в созданном файле
Ответ 6
Я удивлен, сколько ответов здесь просто неверно. Если ничего не вставить в файл, файл заполнится чем-то вроде 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}
Ответ 7
Вы можете воспроизвести функциональность касания следующей командой:
$>>filename
Речь идет о попытках выполнить программу под названием $
, но если $
не существует (или не является исполняемым файлом, который производит вывод), то он не выводит его. Это, по сути, хак в функциональности, однако вы получите следующее сообщение об ошибке:
'$' не распознается как внутренняя или внешняя команда, оперативной программы или командного файла.
Если вы не хотите сообщения об ошибке, вы можете сделать одну из двух вещей:
type nul >> filename
Или:
$>>filename 2>nul
Команда type
пытается отобразить содержимое nul, которое ничего не делает, но возвращает EOF (конец файла) при чтении.
2>nul
отправляет ошибку-вывод (вывод 2) в nul (который игнорирует все входные данные при записи в). Очевидно, что вторая команда (с 2>nul
) избыточна командой type
, так как она быстрее набирается. Но по крайней мере у вас теперь есть выбор и знания.
Ответ 8
Нет команды - ни type
, ни echo
- не требуется для эмуляции команды Unix/Mac OS X "touch" в терминале Windows Powershell. Просто используйте следующую сокращенную версию:
$null > filename
Это создаст пустой файл с именем 'filename' в вашем текущем местоположении. Используйте любое расширение имени файла, которое вам может понадобиться, например. '.txt'.
Источник: https://superuser.com/questions/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell (см. комментарии)
Ответ 9
В Windows Power Shell вы можете использовать следующую команду:
New-Item <filename.extension>
или же
New-Item <filename.extension> -type file
Примечание. Новый элемент можно заменить его псевдонимом ni.
Ответ 10
Вы также можете использовать copy con [filename] в командном окне Windows (cmd.exe):
C:\copy con yourfile.txt [enter]
C:\CTRL + Z [enter] //hold CTRL key & press "Z" then press Enter key.
^Z
1 Files Copied.
Это создаст файл с именем yourfile.txt
в локальном каталоге.
Ответ 11
как уже упоминалось
echo >> index.html
это может быть любой файл с любым расширением
notepad index.html
это откроет ваш файл в редакторе блокнота
Ответ 12
Если у вас на компьютере установлен Cygwin, вы можете просто использовать прилагаемый исполняемый файл для сенсорного экрана (также через командную строку Windows):
C:\cygwin64\bin\touch.exe <file_path>
Ответ 13
ni <file>.<extension>
Ответ 14
Легко, пример с TXT файлом
echo $null >> filename.txt
Ответ 15
Да, вы можете использовать Node для Touch, я просто использую это, и все работает нормально в Windows Cmd или Gitbash
![enter image description here]()