Windows equivalent of the Linux command 'touch'?
Solution 1:
If you want to touch the date stamp of a file using windows, use the following command at the command prompt:
copy /b filename.ext +,,
(where filename.ext
is your file's name). The +,,
is a special flag to copy
telling it to simply update the date/time on the file:
* Changing the time and date of a file
If you want to assign the current time and date to a file without modifying the file, use the following syntax:
copy /b Source+,,
The commas indicate the omission of the Destination parameter.
Edit based on comments by Lumi and Justin: put this in a batch file, eg. touch.cmd
@COPY /B %1+,, %1
This works even if the file is not in the current directory (tested on Windows 7).
Solution 2:
I've used and recommend unxutils which are native Win32 ports of lots of common Unix utilities. There is a touch
command in there.
Solution 3:
If all you want is to change the file's last modified date (which was my case):
C:\> powershell (ls your-file-name-here).LastWriteTime = Get-Date
Solution 4:
type nul >>file & copy file +,,
- Creates
file
if it does not exist. - Leaves file contents alone.
- Just uses
cmd
built-ins. - Both last-access and creation times updated.
UPDATE
Gah! This doesn't work on read-only files, whereas touch
does. I suggest:
:touch
if not exist "%~1" type nul >>"%~1"& goto :eof
set _ATTRIBUTES=%~a1
if "%~a1"=="%_ATTRIBUTES:r=%" (copy "%~1"+,,) else attrib -r "%~1" & copy "%~1"+,, & attrib +r "%~1"