2013-08-31 2 views
1

То, что я сделал до сих пор (отображается как дата и время на Win2k3 5.2.3790 машины с ведущим пространством):Batch макро даты и времени отображения с последующим текстом

SET DATETIME=(FOR /F %%C IN ('TIME/T') DO SET /P NOW=%%C :)&(FOR /F "TOKENS=2 DELIMS= " %%A IN ('DATE/T') DO SET /P NOW=%NOW% %%A <NUL) 

%DATETIME% 

Я хочу, чтобы удалить ведущие пространство до даты, когда набор/p добавляет и добавляет параметр для текста, но не может найти решение. Я также хотел бы добавить параметр для текста, как описано здесь http://ss64.com/nt/syntax-macros.html после того, как набор/p будет решен.

То, что я хотел бы получить в результате (но с пакетной макрокоманды вместо вызова):

@ECHO OFF 

CALL :DATETIME "HELLO WORLD " 
PAUSE>NUL 

:DATETIME 
FOR /F "TOKENS=*" %%A IN ('DATE/T') DO FOR %%B IN (%%A) DO SET NOW=%%B 
FOR /F %%C IN ('TIME/T') DO SET /P NOW=%NOW% %%C %~1< NUL 

Спасибо,

+1

, если вы присоединитесь к команде с амперсандом, и вы создаете кодовый блок и не можете получить доступ к этим «% variables%». Вам нужно «замедленное расширение» и «! Переменные!». – Endoro

ответ

0

Как вы ссылаться макросы на ss64.com вы должны попробуйте использовать синтаксис, показанный там.

Это не обязательно, но хороший способ использования форматирования %\n%.

@ECHO OFF 
set LF=^ 


::Above 2 blank lines are required - do not remove 
set ^"\n=^^^%LF%%LF%^%LF%%LF%^^" 
SET DATETIME=(%\n% 
    FOR /F "TOKENS=*" %%A IN ('DATE/T') DO (%\n% 
    FOR /F %%C IN ('TIME/T') DO SET /P "NOW=%%A%%C "^<NUL%\n% 
)%\n% 
) 

set datet 
echo ------ 
%DATETIME% 
echo Hello World 
1

У меня складывается впечатление, что задача состоит в том, чтобы повторить дату и время и текст на одной строке:

эхо Дата%% @% времени% - «Hello World»

+0

Да, похоже. Макрос является слишком сложным для этого – jeb

Смежные вопросы