Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > Компьютеры и Интернет > Скорая помощь

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 29.04.2008, 14:13   #1
Неактивный пользователь
 
Регистрация: 17.04.2008
Сообщений: 30
Репутация: 6
По умолчанию Как отобразить дату в другом формате

Привет!
Помогите, пожалуйста! Из командной строки WinXP нужно создать файл с именем, равным текущей дате и расширением "txt". Но дата в имени должна быть в формате ГГГГ-ММ-ДД. Я сделал такой cmd-файл:
Код:
@ECHO off
ECHO Test > %Date%.txt
При запуске создается текстовый файл с содержимым "Test" и именем 29.04.2008.txt
А мне нужно: 2008-04-29.txt
Я так понимаю, что формат даты у меня на машине именно дд.мм.гггг.
Подскажите, как можно преобразовать имя файла, не меняя формата даты на машине?
Матвей Н вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: стол в арендутеатр модерн как добраться от метро бауманская - RedKassa.ruконцерт король шут - redkassa.ruoptibox me-18s инструкция блок управленияяндекс товары на сайте wordpress


Старый 29.04.2008, 15:07   #2
5c00p
Новичок
 
Пол:Мужской
Регистрация: 26.04.2007
Сообщений: 15
Репутация: 4
По умолчанию Ответ: Как отобразить дату в другом формате

Командами ОС этого сделать нельзя.

Я когда-то сталкивался с похожей задачей. Мне надо было создавать архивные файлы в автоматическом режиме с именами, содержащими дату и время. Но с архивами проще: при помощи WinRAR это сделать легко сделать.
5c00p вне форума
 
Ответить с цитированием Вверх
Старый 29.04.2008, 17:24   #3
avk2567
Неактивный пользователь
 
Пол:Мужской
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
По умолчанию Ответ: Как отобразить дату в другом формате

Можно так:

@echo off
FOR /F "TOKENS=1,2,3 delims=. " %%k IN ('DATE /T') DO @echo Test > %%m-%%l-%%k.txt
avk2567 вне форума
 
Ответить с цитированием Вверх
Старый 29.04.2008, 17:49   #4
5c00p
Новичок
 
Пол:Мужской
Регистрация: 26.04.2007
Сообщений: 15
Репутация: 4
По умолчанию Ответ: Как отобразить дату в другом формате

Действительно.

Но у меня заработало только вот так:

FOR /F "TOKENS=1,2,3 delims=. " %k IN ('DATE /T') DO @echo Test > %m-%l-%k.txt

т.е. с 1 символом %.
5c00p вне форума
 
Ответить с цитированием Вверх
Старый 29.04.2008, 19:28   #5
avk2567
Неактивный пользователь
 
Пол:Мужской
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
По умолчанию Ответ: Как отобразить дату в другом формате

В командной строке работает с одним (%) , в .bat-е с двумя (%%).
avk2567 вне форума
 
Ответить с цитированием Вверх
Старый 29.04.2008, 20:34   #6
Black_Swamp
Постоялец
 
Аватар для Black_Swamp
 
Пол:Мужской
Регистрация: 02.08.2007
Сообщений: 664
Репутация: 364
По умолчанию Ответ: Как отобразить дату в другом формате

А почему с k начал? можно с а
FOR /F "TOKENS=1,2,3 delims=. " %a IN ('DATE /T') DO @echo Test > %c.%b.%a.txt
Начало алфавита всё таки :D
Black_Swamp вне форума
 
Ответить с цитированием Вверх
Старый 30.04.2008, 09:33   #7
Матвей Н
Неактивный пользователь
 
Регистрация: 17.04.2008
Сообщений: 30
Репутация: 6
По умолчанию Ответ: Как отобразить дату в другом формате

Спасибо большое всем! Но аппетит приходит во время еды ))
Возник новый вопрос:
А если я хочу получить в имени файла вчерашнюю дату, то как в этом случае быть? Интуиция подсказывает, что простой "FOR" тут уже не поможет.
Матвей Н вне форума
 
Ответить с цитированием Вверх
Старый 30.04.2008, 12:34   #8
avk2567
Неактивный пользователь
 
Пол:Мужской
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
По умолчанию Ответ: Как отобразить дату в другом формате

Посмотри здесь

Под вопросом <Q:How do I perform calculations?> будет ответ.
avk2567 вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 30.04.2008, 16:12   #9
Black_Swamp
Постоялец
 
Аватар для Black_Swamp
 
Пол:Мужской
Регистрация: 02.08.2007
Сообщений: 664
Репутация: 364
По умолчанию Ответ: Как отобразить дату в другом формате

Ничего не понял по ссылке данной выше, как не пробовал ничего не получилось, можно вручную, но тут условие такое, обязательно ввести какое нибудь число, и надо чтобы это находилось в файле *.bat
Код:
@echo off
set /p a= Введите число от 1 до 31: 
if %a% LSS 32 (goto first) ELSE goto second
:first
FOR /F "TOKENS=1,2,3 delims=. " %%a IN ('DATE /T') DO echo Test > %%c.%%b.%a%.txt
exit
:second
FOR /F "TOKENS=1,2,3 delims=. " %%a IN ('DATE /T') DO echo Test > %%c.%%b.%%a.txt
exit
Black_Swamp вне форума
 
Ответить с цитированием Вверх
Старый 30.04.2008, 21:01   #10
avk2567
Неактивный пользователь
 
Пол:Мужской
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
По умолчанию Ответ: Как отобразить дату в другом формате

Передранное и малость переделанное оттуда-же
bat файл:
foo.bat

в конечнои итоге DD,MM,YY устанавливются соотвественно сегодняшней дате ,а PDDD, PDMM, PDYY - вчерашнему дню. Что с этими переменными делать дальше - дело хозяйское
avk2567 вне форума
 
Ответить с цитированием Вверх
Старый 01.05.2008, 00:37   #11
Матвей Н
Неактивный пользователь
 
Регистрация: 17.04.2008
Сообщений: 30
Репутация: 6
По умолчанию Ответ: Как отобразить дату в другом формате

О, классно! А Вы разобрались, что означают эти строки?
Цитата:
Сообщение от avk2567 Посмотреть сообщение
set PDDD=%PDDD:~1,2%

Я долго пыжился над параметрами после двоеточия ) Подбирал и так, и сяк. А потом осенило: это ж аналог MID в Бейсике! После "тильды" стоит количество отбрасываемых символов строки, а после "запятой" количество символов, которое затем нужно взять.
В связи с этим у меня родилась идея для второго варианта решения моей первой проблемы:
Второй вариант первой проблемы
Матвей Н вне форума
 
Ответить с цитированием Вверх
Старый 01.05.2008, 11:20   #12
vmunt
Постоялец
 
Пол:Мужской
Регистрация: 28.01.2008
Адрес: Пермь
Сообщений: 438
Репутация: 172
По умолчанию Ответ: Как отобразить дату в другом формате

Цитата:
Сообщение от Матвей Н Посмотреть сообщение
Второй вариант первой проблемы

Прикольно! Или ещё короче:
Test >%date:~6,4%.%date:~3,2%.%date:~0,2%.txt

Добавлено через 2 минуты
Тьфу! Echo пропало! Надо так:
echo Test >%date:~6,4%.%date:~3,2%.%date:~0,2%.txt

Последний раз редактировалось vmunt; 01.05.2008 в 11:23.. Причина: Добавлено сообщение
vmunt вне форума
 
Ответить с цитированием Вверх
Старый 01.05.2008, 19:56   #13
avk2567
Неактивный пользователь
 
Пол:Мужской
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
По умолчанию Ответ: Как отобразить дату в другом формате

Цимес то в том, что сей кусок
уставливает переменные dd,mm,yy корректно, независимо от текущих региональных установок!
avk2567 вне форума
 
Ответить с цитированием Вверх
Старый 02.05.2008, 00:52   #14
Матвей Н
Неактивный пользователь
 
Регистрация: 17.04.2008
Сообщений: 30
Репутация: 6
По умолчанию Ответ: Как отобразить дату в другом формате

А как понять эту запись?
Цитата:
Сообщение от avk2567 Посмотреть сообщение
set $tok=1-3

Что такое $tok - произвольная переменная среды или "$" что-то значит?

Тем не менее, вдохновившись полученными достижениями в области числовых операций и обработки строк )) я решил обобщить вторую задачку и написал батничек, который к любой дате прибавляет (или вычитает) любое количество дней и возвращает полученную дату. Батник - ниже на Ваш суд.
addday.cmd

Дает, например, вот такие результаты:
Код:
C:\TMP\addday 02.05.2008 +600
2009-12-23

C:\TMP\addday 23.12.2009 -600
2008-05-02
Матвей Н вне форума
 
Ответить с цитированием Вверх
Старый 02.05.2008, 12:49   #15
avk2567
Неактивный пользователь
 
Пол:Мужской
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
По умолчанию Ответ: Как отобразить дату в другом формате

set $tok=1-3
tok - временная переменная выставляемая таким образом, чтобы FOR использующий ее в качестве параметра обрабатывал нужные нам токены.
А %$tok% - это подстановка (в данном случае 1-3) где надо.
avk2567 вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Asp.NET Как отобразить изображение на странице, если оно находится в бд? Ordos .NET 3 15.09.2008 01:51
PDF - как сохранить в другом формате? FOX_1 Просмотр, конверторы и редакторы графики 32 22.08.2008 13:53
Не возможно отобразить страницу... strannikov Архив 6 17.06.2007 01:51
Как убрать дату с фотографии? Vesna Архив 4 04.05.2006 09:19

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 06:36. Часовой пояс GMT +3.


Copyright ©2004 - 2026 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.07235 секунды с 11 запросами