Quotes in wrong place. Plus needless indirection.
start /b "" cmd.exe /c "touch.exe -xamq -t 201010201020 -- batch.cmd"
So you are asking CMD to ask Explorer (Start command) to start CMD to run a program.
start /b "" cmd.exe /c "touch.exe" -xamq -t 201010201020 -- batch.cmd
Better
"touch.exe" -xamq -t 201010201020 -- batch.cmd
To do it in Windows (copy
without a destination updates the file date and %~0 is the name of the bat)
set olddate=%date%
set oldtime=%time%
date 1/1/2010
time 5:15
copy "%~0",,
date %olddate%
time %oldtime%
Batchfiles are opened, the next line read, then closed for each line, and once to find out there are no more lines. Wierd stuff can happen if modifing a running bat.
& seperates commands on a line.
&& executes this command only if previous command's errorlevel is 0.
|| (not used above) executes this command only if previous command's errorlevel is NOT 0
> output to a file
>> append output to a file
< input from a file
| output of one command into the input of another command
^ escapes any of the above, including itself, if needed to be passed to a program
" parameters with spaces must be enclosed in quotes
+ used with copy to concatinate files. E.G. copy file1+file2 newfile
, used with copy to indicate missing parameters. This updates the files modified date. E.G. copy /b file1,,
%variablename% a inbuilt or user set environmental variable
!variablename! a user set environmental variable expanded at execution time, turned with SelLocal EnableDelayedExpansion command
%<number> (%1) the nth command line parameter passed to a batch file. %0 is the batchfile's name.
%* (%*) the entire command line.
%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. Single % sign at command prompt and double % sign in a batch file.
\\ (\\servername\sharename\folder\file.ext) access files and folders via UNC naming.
: (win.ini:streamname) accesses an alternative steam. Also separates drive from rest of path.
. (win.ini) the LAST dot in a file path seperates the name from extension
. (dir .\*.txt) the current directory
.. (cd ..) the parent directory
\\?\ (\\?\c:\windows\win.ini) When a file path is prefixed with \\?\ filename checks are turned off.
< > : " / \ | Reserved characters. May not be used in filenames.
Reserved names. These refer to devices eg,
copy filename con
which copies a file to the console window.
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4,
COM5, COM6, COM7, COM8, COM9, LPT1, LPT2,
LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9
Maximum path length 260 characters
Maximum path length (\\?\) 32,767 characters (approx - some rare characters use 2 characters of storage)
Maximum filename length 255 characters
Is the fact that the batch file actively executing locking it, preventing its attributes from changing? If so, you need a two-step process, where batch file A calls batch file B, passing in the name of A as a parameter and exiting before be touches file A. A delay in B might be needed. – DrMoishe Pippik – 2015-05-10T02:32:09.723
It's locked in my examples running from Windows, but not from the command line. Also, Calling from A to B will keep A open, because when B finishes there's a "return" to A. – Joel A – 2015-05-10T02:49:19.300