2016-05-03 3 views
0

У меня есть пакетный файл, который создает токен-файл формата имени xyz_yyyyddmmhhmmss (добавление метки времени) на основе некоторых условий. Проблема заключается в том, что если файл токена создается с 0:00 до 9:59, временная часть имени файла имеет 5 цифр и 6 цифр в противном случае. От него требуется 6 цифр.Пакетный файл для создания файла с отметкой времени

for /f "tokens=1 delims=/ " %%j in ("%date%") do set d1=%%j 
    for /f "tokens=2 delims=/ " %%j in ("%date%") do set d2=%%j 
    for /f "tokens=3 delims=/ " %%j in ("%date%") do set d3=%%j 
    for /f "tokens=4 delims=/ " %%j in ("%date%") do set d4=%%j 
    for /f "tokens=1 delims=: " %%j in ("%time%") do set t1=%%j 
    for /f "tokens=2 delims=: " %%j in ("%time%") do set t2=%%j 
    for /f "tokens=3 delims=:. " %%j in ("%time%") do set t3=%%j 


    if exist %1xyz_*.tkn (del %1xyz_*.tkn 
    dir %1*.txt>%1xyz_%d4%%d2%%d3%%t1%%t2%%t3%.tkn) 
    if not exist %xyz_*.tkn (dir %1*.txt>%1xyz_%d4%%d2%%d3%%t1%%t2%%t3%.tkn) 

Просьба дать ваши данные.

Спасибо!

+0

Вы должны использовать 'для/F "токенов = 1-7 delims = /:.," %% I в ("Дата%%%% времени") делать множество "d1 = %% I" & set "d2 = %% J" и установить "d3 = %% K" и установить "d4 = %% L" и установить "t1 = %% M" и установить "t2 = %% N" и установить "t3 = %% O ",' '; в противном случае при запуске вашего кода очень близко к полуночи и несколько раз читайте '% date%' /% 'time%', вы можете получить неожиданные результаты; обратите внимание, что '% date%' и '% time%' возвращают дату и время в формате в зависимости от ваших настроек локали ... – aschipfl

+0

По возможности вы должны предпочесть решение, которое не зависит от локальных настроек [например, это] (http : //stackoverflow.com/a/18024049/2152082) – Stephan

ответ

0

Давным-давно, я нашел основание где-то (довольно уверенно не так), внеся некоторые изменения в него и вложил его в практически каждый пакетный файл, который я написал с тех пор. Я не уверен, что когда-либо полностью понял, как это работает, но это так. Вы должны быть в состоянии адаптировать его к вашему формату без особых проблем.

REM Creates a string in the form of YYYYMMDD-hhmm, with no embedded spaces 
SET hh=%time:~0,2% 
IF "%time:~0,1%"==" " SET hh=0%hh:~1,1% 
SET DateString=%date:~10,4%%date:~4,2%%date:~7,2%-%hh%%time:~3,2% 
Смежные вопросы