Why is the syntax for touching a file from the command prompt so strange?

Raymond Chen

The magic incantation for updating the last-modified date on a file is


What strange syntax! What’s with the plus sign and the commas, anyway?

The formal syntax is the much more straightforward


This means to start with the file A, then append the files B, C, and D, treating them all as binary files.

If you omit the B+C+D part, then you get


This means “Start with A, then append nothing.” The side effect is that the last-write time gets updated, because the command processor opens A for append, writes nothing, then closes the handle.

That syntax has worked since at least MS-DOS 2.1 (the earliest version I still have a virtual machine for).

I dont know where the two-comma version came from, but it most likely exploited a parsing glitch in COMMAND.COM, and somehow this variant gained traction and became the version everybody used (even though the other version is two keystrokes shorter). As a result, this weird syntax has become grandfathered as a special-case in the CMD.EXE parser. Here’s some actual code from the part of CMD.EXE which parses the arguments to the COPY command:

if (parse_state == SEEN_TWO_COMMAS)
    copy_mode = TOUCH;


Discussion is closed.

Feedback usabilla icon