Аналог команды touch для windows

The touch command in Linux is used to change a file’s “Access“, “Modify” and “Change” timestamps to the current time and date, but if the file doesn’t exist, the touch command creates it.

If you simply want to create an empty file from the command-line prompt (CMD) or a Windows PowerShell – the type and copy commands can be considered as a Windows touch command equivalent.

The file timestamps in Windows can be changed using the built-in PowerShell commands.

Cool Tip: Windows cat command equivalent in CMD and PowerShell! Read more →

To create a new file, as a Windows touch equivalent, you can use one of these commands:

C:\> type nul >> "file.txt"
- or -
C:\> copy nul "file.txt"

In the PowerShell the new file can be also create as follows:

PS C:\> New-Item "file.txt"
- or -
PS C:\> ni "file.txt"

To change a file timestamps to the current time and date, execute the following commands from the PowerShell:

PS C:\> (Get-Item "file.txt").CreationTime=$(Get-Date -format o)
PS C:\> (Get-Item "file.txt").LastWriteTime=$(Get-Date -format o)
PS C:\> (Get-Item "file.txt").LastAccessTime=$(Get-Date -format o)

Cool Tip: Windows grep command equivalent in CMD and PowerShell! Read more →

To set the specific timestamps, execute:

PS C:\> (Get-Item "file.txt").CreationTime=("01 March 2020 09:00:00")
PS C:\> (Get-Item "file.txt").LastWriteTime=("20 April 2020 17:00:00")
PS C:\> (Get-Item "file.txt").LastAccessTime=("20 April 2020 17:00:00")

The timestamps can be displayed using the following command:

PS C:\> Get-Item file.txt | Format-List CreationTime, LastAccessTime, LastWriteTime

Was it useful? Share this post with the world!

On a windows machine I get this error

‘touch’ is not recognized as an internal or external command, operable program or batch file.

I was following these instructions which seem to be linux specific, but on a standard windows commandline it does not work like this:

touch index.html app.js style.css

Is there a windows equivalent of the ‘touch’ command from the linux / mac os / unix world ? Do I need to create these files by hand (and modify them to change the timestamp) in order to implement this sort of command? I am working with node and that doesn’t seem very … node-ish…

mit's user avatar

mit

11.1k11 gold badges50 silver badges74 bronze badges

asked May 3, 2015 at 7:20

CuriousAboutNode's user avatar

CuriousAboutNodeCuriousAboutNode

3,1872 gold badges11 silver badges6 bronze badges

6

An easy way to replace the touch command on a windows command line like cmd would be:

type nul > your_file.txt

This will create 0 bytes in the your_file.txt file.

This would also be a good solution to use in windows batch files.

Another way of doing it is by using the echo command:

echo.> your_file.txt

echo. — will create a file with one empty line in it.


If you need to preserve the content of the file use >> instead of >

>   Creates a new file
>>  Preserves content of the file

Example

type nul >> your_file.txt

You can also use call command.

Calls one batch program from another without stopping the parent batch program. The call command accepts labels as the target of the call.

Example:

call >> your_file.txt


or even if you don’t want make it hard you can Just install Windows Subsystem for Linux (WSL). Then, type.

wsl touch

or

wsl touch textfilenametoedit.txt

Quotes are not needed.

answered Jun 10, 2016 at 20:43

Vlad Bezden's user avatar

Vlad BezdenVlad Bezden

84.3k25 gold badges248 silver badges181 bronze badges

9

Windows does not natively include a touch command.

You can use any of the available public versions or you can use your own version. Save this code as touch.cmd and place it somewhere in your path

@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

It will iterate over it argument list, and for each element if it exists, update the file timestamp, else, create it.

answered May 3, 2015 at 20:27

MC ND's user avatar

1

You can use this command: ECHO >> filename.txt

it will create a file with the given extension in the current folder.

UPDATE:

for an empty file use: copy NUL filename.txt

answered Feb 23, 2016 at 21:42

Aaron Clark's user avatar

Aaron ClarkAaron Clark

7429 silver badges16 bronze badges

5

On windows Power Shell, you can use the following command:

New-Item <filename.extension>

or

New-Item <filename.extension> -type file

Note: New-Item can be replaced with its alias ni

answered Nov 5, 2018 at 7:05

Raghuveer's user avatar

RaghuveerRaghuveer

7177 silver badges18 bronze badges

5

I’m surprised how many answers here are just wrong. Echoing nothing into a file will fill the file with something like ECHO is ON, and trying to echo $nul into a file will literally place $nul into the file. Additionally for PowerShell, echoing $null into a file won’t actually make a 0kb file, but something encoded as UCS-2 LE BOM, which can get messy if you need to make sure your files don’t have a byte-order mark.

After testing all the answers here and referencing some similar ones, I can guarantee these will work per console shell. Just change FileName.FileExtension to the full or relative-path of the file you want to touch; thanks to Keith Russell for the COPY NUL FILE.EXT update:

CMD w/Timestamp Updates

copy NUL FileName.FileExtension

This will create a new file named whatever you placed instead of FileName.FileExtension with a size of 0 bytes. If the file already exists it will basically copy itself in-place to update the timestamp. I’d say this is more of a workaround than 1:1 functionality with touch but I don’t know of any built-in tools for CMD that can accomplish updating a file’s timestamp without changing any of its other content.

CMD w/out Timestamp Updates

if not exist FileName.FileExtension copy NUL FileName.FileExtension

Powershell w/Timestamp Updates

if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}

Yes, it will work in-console as a one-liner; no requirement to place it in a PowerShell script file.

PowerShell w/out Timestamp Updates

if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}

answered Nov 13, 2018 at 1:34

kayleeFrye_onDeck's user avatar

7

Use the following command on the your command line:

fsutil file createnew filename  requiredSize

The parameters info as followed:

fsutil — File system utility ( the executable you are running )

file — triggers a file action

createnew — the action to perform (create a new file)

filename — would be literally the name of the file

requiredSize — would allocate a file size in bytes in the created file

answered May 3, 2015 at 7:44

Ofer Haber's user avatar

Ofer HaberOfer Haber

6184 silver badges10 bronze badges

6

install npm on you machine

run the below command in you command prompt.

npm install touch-cli -g

now you will be able to use touch cmd.

answered Jan 26, 2021 at 3:59

maxspan's user avatar

maxspanmaxspan

13.4k15 gold badges75 silver badges105 bronze badges

2

You can replicate the functionality of touch with the following command:

$>>filename

What this does is attempts to execute a program called $, but if $ does not exist (or is not an executable that produces output) then no output is produced by it. It is essentially a hack on the functionality, however you will get the following error message:

‘$’ is not recognized as an internal or external command,
operable program or batch file.

If you don’t want the error message then you can do one of two things:

type nul >> filename

Or:

$>>filename 2>nul

The type command tries to display the contents of nul, which does nothing but returns an EOF (end of file) when read.

2>nul sends error-output (output 2) to nul (which ignores all input when written to). Obviously the second command (with 2>nul) is made redundant by the type command since it is quicker to type. But at least you now have the option and the knowledge.

answered Jul 1, 2017 at 9:40

Keldon Alleyne's user avatar

1

as mentioned

echo >> index.html

it can be any file, with any extension
then do

notepad index.html

this will open your file in the notepad editor

answered Jul 20, 2018 at 12:42

navarq's user avatar

navarqnavarq

1,1052 gold badges15 silver badges20 bronze badges

For a very simple version of touch which would be mostly used to create a 0 byte file in the current directory, an alternative would be creating a touch.bat file and either adding it to the %Path% or copying it to the C:\Windows\System32 directory, like so:

touch.bat

@echo off
powershell New-Item %* -ItemType file

Creating a single file

C:\Users\YourName\Desktop>touch a.txt

    Directory: C:\Users\YourName\Desktop

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2020-10-14  10:28 PM              0 a.txt

Creating multiple files

C:\Users\YourName\Desktop>touch "b.txt,c.txt"

    Directory: C:\Users\YourName\Desktop

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2020-10-14  10:52 PM              0 b.txt
-a----        2020-10-14  10:52 PM              0 c.txt

Also

  • Works both with PowerShell and the Command Prompt.
  • Works with existing subdirectories.
  • Does not create a file if it already exists:
New-Item : The file 'C:\Users\YourName\Desktop\a.txt' already exists.
  • For multiple files, creates only the files that do not exist.
    • Accepts a comma-separated list of filenames without spaces or enclosed in quotes if spaces are necessary:
C:\Users\YourName\Desktop>touch d.txt,e.txt,f.txt
C:\Users\YourName\Desktop>touch "g.txt, 'name with spaces.txt'"

answered Oct 15, 2020 at 2:46

rbento's user avatar

rbentorbento

10.2k3 gold badges62 silver badges61 bronze badges

You can also use copy con [filename] in a Windows command window (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.

This will create a file named yourfile.txt in the local directory.

answered Sep 13, 2016 at 21:08

delliottg's user avatar

delliottgdelliottg

3,9503 gold badges38 silver badges52 bronze badges

I use cmder (a command line emulator)

It allows you to run all Linux commands inside a Windows machine.

It can be downloaded from https://cmder.net/

I really like it

answered Dec 14, 2019 at 7:08

user1880531's user avatar

1

From the Terminal of Visual Code Studio on Windows 10, this is what worked for me to create a new file:

type > hello.js
echo > orange.js
ni > peach.js

answered May 13, 2020 at 15:29

Enora's user avatar

EnoraEnora

1568 bronze badges

As Raghuveer points out in his/her answer, ni is the PowerShell alias for New-Item, so you can create files from a PowerShell prompt using ni instead of touch.

If you prefer to type touch instead of ni, you can set a touch alias to the PowerShell New-Item cmdlet.

Creating a touch command in Windows PowerShell:

From a PowerShell prompt, define the new alias.

Set-Alias -Name touch -Value New-Item

Now the touch command works almost the same as you are expecting. The only difference is that you’ll need to separate your list of files with commas.

touch index.html, app.js, style.css

Note that this only sets the alias for PowerShell. If PowerShell isn’t your thing, you can set up WSL or use bash for Windows.

Unfortunately the alias will be forgotten as soon as you end your PowerShell session. To make the alias permanent, you have to add it to your PowerShell user profile.

From a PowerShell prompt:

notepad $profile

Add your alias definition to your profile and save.

answered Sep 9, 2020 at 14:05

Jon Crowell's user avatar

Jon CrowellJon Crowell

21.7k14 gold badges89 silver badges110 bronze badges

Using PowerShell, type: ni index.html or ni style.css or ni app.js

ni <filename>.<extension>

answered Jul 20, 2022 at 21:08

Kevin Kirsten Lucas's user avatar

1

If you have Cygwin installed in your PC, you can simply use the supplied executable for touch (also via windows command prompt):

C:\cygwin64\bin\touch.exe <file_path>

answered Jun 12, 2019 at 8:37

Uri Ziv's user avatar

1

Assuming the file exists and you just need to update the timestamp.

type test.c > test.c.bkp && type test.c.bkp > test.c && del test.c.bkp

answered Dec 31, 2019 at 8:04

Anoop Kumar Narayanan's user avatar

Use rem. > file.txt (notice the dot attached to the command «rem»)

this creates an empty file

answered May 8, 2022 at 13:54

Joshua's user avatar

JoshuaJoshua

1092 silver badges6 bronze badges

Shortest possible vanilla solution is :

.>myfile.txt

enter image description here

You will get an error , but file is created :

enter image description here

answered May 8, 2022 at 10:57

Royi Namir's user avatar

Royi NamirRoyi Namir

145k138 gold badges470 silver badges799 bronze badges

If you are using VS Code, there is a command line tool code to help you open a non-exist file in VS Code.

answered Mar 16, 2022 at 2:18

Wade's user avatar

WadeWade

111 silver badge1 bronze badge

There is something missing in all of the other answers. The Linux touch command has a -t option, which lets you set the last modified time to any arbitrary date and time, not just the current time.

This sets the modification date of filename.txt to 20 December 2012 at 30 minutes after midnight.

touch -t 201212210030 filename.txt

To get the equivalent in Windows, you need to be in PowerShell, it can’t be done in Cmd.

  • Change the creation date/timestamp of a file named filename.txt:
(Get-Item "D:\Test\filename.txt").CreationTime=("21 December 2012 00:30:00")
  • Change the last write date/timestamp of a file named filename.txt:
(Get-Item "D:\Test\filename.txt").LastWriteTime=("21 December 2012 00:30:00")
  • Change the last accessed date/timestamp of a file named filename.txt:
(Get-Item "D:\Test\filename.txt").LastAccessTime=("21 December 2012 00:30:00")

answered Jul 7, 2022 at 9:56

Amedee Van Gasse's user avatar

Amedee Van GasseAmedee Van Gasse

7,3105 gold badges55 silver badges102 bronze badges

If you have WSL with the appropriate distro like Ubuntu you can have the touch command in the CMD and not just the bash terminal. It works for me on Windows 10 & 11 Windows Terminal

answered Oct 24, 2022 at 16:00

Sebastian's user avatar

SebastianSebastian

4023 silver badges12 bronze badges

Easy, example with txt file

echo $null >> filename.txt

answered Feb 22, 2018 at 20:20

Thiago Maciel's user avatar

1

Yes you can use Node for Touch I just use that and its working all fine in windows Cmd or gitbash

enter image description here

Matheus Cuba's user avatar

Matheus Cuba

2,0781 gold badge20 silver badges31 bronze badges

answered Apr 11, 2018 at 20:09

Asad Iftikhar's user avatar

Asad IftikharAsad Iftikhar

531 gold badge4 silver badges10 bronze badges

1

Use type instead of touch

type YOUR_FILE_NAME

However, it is limited to just a single file

answered Dec 21, 2022 at 13:21

Tridib Roy Arjo's user avatar

2

I wanted the ‘touch’ feature of cloning / duplicating the file dates from another file, natively, and be usable from a batch file.

So ‘drag and drop’ video file on to batch file, FFMPEG runs, then ‘Date Created’ and ‘Date Modified’ from the input file gets copied to the output file.

This seemed simple at first until you find batch files are terrible at handling unicode file names, in-line PowerShell messes up with file name symbols, and double escaping them is a nightmare.

My solution was make the ‘touch’ part a seperate PowerShell script which I called ‘CLONE-FILE-DATE.ps1’ and it contains:

param
(
  [Parameter(Mandatory=$true)][string]$SourcePath,
  [Parameter(Mandatory=$true)][string]$TargetPath
)

(GI -LiteralPath $TargetPath).CreationTime  = (GI -LiteralPath $SourcePath).CreationTime
(GI -LiteralPath $TargetPath).LastWriteTime = (GI -LiteralPath $SourcePath).LastWriteTime

Then here is example usage within my ‘CONVERT.BAT’ batch file:

%~dp0\ffmpeg -i "%~1" ACTION "%~1-output.mp4"

CHCP 65001 > nul && PowerShell -ExecutionPolicy ByPass -File "%~dp0\CLONE-FILE-DATE.PS1" "%~1" "%~1-output.mp4"

I think the PowerShell is readable, so will just explain the batch speak:

%~dp0 is the current directory of the batch file.

%~1 is the path of the file dropped onto the batch without quotes.

CHCP 65001 > nul sets characters to UTF-8 and swallows the output.

-ExecutionPolicy ByPass allows you to run PowerShell without needing to modify the global policy, which is there to prevent people accidentally running scripts.

Xeffer

Простите начинающего, но как сделать чтобы команда touch gulpfile.js заработала? Увидел в уроке по bower эту команду, захотел использовать, но cmd выдает что то невнятное, не запуская эту команду.


  • Вопрос задан

  • 24303 просмотра

Под unix-like операционными системами touch либо обновляет дату последнего изменения файла, либо создает новый пустой файл. Под виндой точно такой команды (из коробки) нет. Создайте этот файл из своего редактора/IDE/файлового менеджера (в проводнике можно создать guplfile.txt и переименовать в gulpfile.js).

Можно поставить git (все равно понадобится), с ним идет т.н. git bash, в котором есть все или почти все юниксовые утилиты.

Нет такой команды в винде. Скорее всего это какая нить сторонняя прога просто, которую из cmd юзать можно.

Пригласить эксперта

В cmd нет touch.
Правда, вот обходной вариант:
1. Создаете файл touch.bat в папке C:\Windows
2. Записываете в него copy /b %1 +,,
3. Наслаждаетесь долгожданной touch gulpfile.js

В линуксовой консоли есть возможность работать с windows с помощью такой команды. Для этого надо поставить какую-нибудь консоль, поддерживающую эту команду (и вообще линуксовые команды) на компьютер.

Я пользую cmder. В основных настройках по-умолчанию или при запуске нового окна консоли надо выставить bash:bash — включение линуксового интерпретатора команд. Эта команда в ней работает.


  • Показать ещё
    Загружается…

08 окт. 2023, в 12:15

100000 руб./за проект

09 окт. 2023, в 12:05

2000 руб./за проект

09 окт. 2023, в 12:01

1000 руб./в час

Минуточку внимания

Существует ли touch или его аналог под Windows?

В мире программирования существует множество удобных команд и инструментов, которые помогают разработчикам повысить эффективность и упростить процесс работы. Одним из таких инструментов является команда «touch» в операционных системах семейства Unix. Она позволяет создавать новые файлы или изменять время создания и модификации существующих файлов. Однако, существует ли аналогичная команда или инструмент для операционной системы Windows?

Первоначально, стоит отметить, что команда «touch» является одной из самых распространённых команд в UNIX-подобных операционных системах, включая Linux и macOS. Она позволяет разработчикам создавать новые файлы, устанавливать время создания и модификации и в некоторых случаях изменять доступ к файлу. Чаще всего она используется совместно с другими командами, такими как «find» или «grep», для автоматизации процесса обновления файлов и каталогов.

Однако, в Windows, на первый взгляд, нет явного аналога команды «touch». Это может сбить с толку разработчиков, привыкших использовать команду «touch» в своём повседневном рабочем процессе. Однако, несмотря на отсутствие команды «touch», существуют несколько способов достичь того же результата под Windows.

Первый способ — использование PowerShell. PowerShell — это мощный инструмент командной строки, встроенный в Windows. С помощью PowerShell вы можете использовать .NET-библиотеку для изменения времени создания и модификации файлов. Вот пример кода PowerShell, который позволяет изменить время создания файла:

$file = Get-Item "path_to_file"
$file.CreationTime = Get-Date "new_creation_time"

В этом примере мы используем команду «Get-Item», чтобы получить объект файла, а затем назначаем новое время создания с помощью свойства «CreationTime».

Однако, использование PowerShell требует базовых навыков в работе с командной строкой и знания синтаксиса. Если вы не знакомы с PowerShell, это может быть непривычно и трудно освоить.

Второй способ — использование сторонних утилит. Существуют некоторые сторонние утилиты, которые предлагают команды, схожие с «touch» в UNIX. Одной из таких утилит является «touch.exe» от GnuWin32. Она предлагает команду «touch» так же, как в UNIX, позволяя создавать новые файлы или изменять время создания и модификации существующих файлов. Утилита GnuWin32 включает в себя множество других полезных команд и инструментов, таких как «find» и «grep». Однако, для использования этих утилит необходимо установить пакет GnuWin32 и настроить переменные среды, что может вызвать определённые сложности для неопытных пользователей.

Третий способ — использование IDE или текстового редактора. Некоторые интегрированные среды разработки (IDE) и текстовые редакторы, такие как Visual Studio или Sublime Text, имеют функции для создания файлов или изменения их времени создания и модификации. Например, в программе Visual Studio можно создать новый файл, щелкнув правой кнопкой мыши по папке и выбрав в контекстном меню «Добавить новый элемент». Также стоит отметить, что многие текстовые редакторы имеют плагины или расширения, позволяющие автоматизировать процесс создания файлов или изменения их атрибутов.

Несмотря на отсутствие непосредственного аналога команды «touch» в операционной системе Windows, существуют различные способы создания новых файлов или изменения времени создания и модификации существующих файлов. Каждый способ имеет свои особенности и может быть полезным в разных ситуациях. Поэтому для выбора подходящего способа необходимо учесть рабочий процесс и требования проекта.

Надеюсь, эта статья помогла вам понять, что вместо команды «touch» в операционной системе Windows можно использовать различные альтернативы. Каждый из предложенных способов имеет свои особенности и может быть полезным в зависимости от ваших потребностей. Важно помнить, что простота и эффективность работы с файлами является неотъемлемой частью разработки программного обеспечения, и поэтому важно выбрать наиболее подходящий способ для вашего проекта.

  • Аналог telnet в windows 10
  • Альтернативная оболочка для windows 10
  • Аналог команды cat в windows
  • Аналог sysprep для windows 7
  • Альтернативная конфигурация ipv4 windows 10