从其自身触摸批处理文件

从其自身触摸批处理文件

我想要一个批处理文件来调整自己到任意日期/时间。我试过了...

touch.exe -xamq -t 201010201020 -- batch.cmd
start /b "" cmd.exe /c "touch.exe -xamq -t 201010201020 -- batch.cmd"

...有趣的是,在 Windows 中运行(双击)时,日期不会改变,cmd.exe 会挂起大约一分钟。当我在 cmd 窗口中运行它时,它运行正常,没有挂起。有什么想法吗?

答案1

引号放错了位置。还有不必要的间接引用。

start /b "" cmd.exe /c "touch.exe -xamq -t 201010201020 -- batch.cmd"

因此,您要求 CMD 要求 Explorer(启动命令)启动 CMD 来运行程序。

start /b "" cmd.exe /c "touch.exe" -xamq -t 201010201020 -- batch.cmd

更好的

"touch.exe" -xamq -t 201010201020 -- batch.cmd

在 Windows 中执行此操作(copy没有目标更新文件日期,%~0 是该批处理文件的名称)

set olddate=%date%
set oldtime=%time%
date 1/1/2010
time 5:15
copy "%~0",,
date %olddate%
time %oldtime%

打开批处理文件,读取下一行,然后关闭每一行,并检查是否没有更多行。如果修改正在运行的批处理文件,可能会发生奇怪的事情。

&    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

相关内容