Подтвердить что ты не робот

Windows эквивалент "touch" (т.е. Способ node.js для создания index.html)

На машине с Windows я получаю эту ошибку

"touch" не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

когда я следую инструкциям:

touch index.html app.js style.css

Есть ли в Windows эквивалент использования "touch"? Нужно ли создавать эти файлы вручную (и изменять их для изменения метки времени), чтобы реализовать команду такого рода? Это не кажется очень... нод...

4b9b3361

Ответ 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