Я бы хотел, чтобы пакетный файл сам прикасался к произвольной дате / времени. Я пробовал...

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

... и что самое забавное, при запуске в Windows (двойной щелчок) дата не меняется, а cmd.exe зависает около минуты. Когда я запускаю его в окне cmd, он работает просто отлично, без зависаний. Есть идеи, что происходит?

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .