![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Неактивный пользователь
Регистрация: 17.04.2008
Сообщений: 30
Репутация: 6
|
Привет!
Помогите, пожалуйста! Из командной строки WinXP нужно создать файл с именем, равным текущей дате и расширением "txt". Но дата в имени должна быть в формате ГГГГ-ММ-ДД. Я сделал такой cmd-файл: Код:
@ECHO off ECHO Test > %Date%.txt А мне нужно: 2008-04-29.txt Я так понимаю, что формат даты у меня на машине именно дд.мм.гггг. Подскажите, как можно преобразовать имя файла, не меняя формата даты на машине? |
|
|
|
| Реклама: | стол в аренду | театр модерн как добраться от метро бауманская - RedKassa.ru | концерт король шут - redkassa.ru | optibox me-18s инструкция блок управления | яндекс товары на сайте wordpress |
|
|
#2
|
|
Новичок
Пол:
Регистрация: 26.04.2007
Сообщений: 15
Репутация: 4
|
Командами ОС этого сделать нельзя.
Я когда-то сталкивался с похожей задачей. Мне надо было создавать архивные файлы в автоматическом режиме с именами, содержащими дату и время. Но с архивами проще: при помощи WinRAR это сделать легко сделать. |
|
|
|
| Сказали спасибо: |
|
|
#3
|
|
Неактивный пользователь
Пол:
Регистрация: 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 |
|
|
|
| Сказали спасибо: |
|
|
#4
|
|
Новичок
Пол:
Регистрация: 26.04.2007
Сообщений: 15
Репутация: 4
|
Действительно.
Но у меня заработало только вот так: FOR /F "TOKENS=1,2,3 delims=. " %k IN ('DATE /T') DO @echo Test > %m-%l-%k.txt т.е. с 1 символом %. |
|
|
|
|
|
#5
|
|
Неактивный пользователь
Пол:
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
|
В командной строке работает с одним (%) , в .bat-е с двумя (%%).
![]() |
|
|
|
|
|
#6
|
|
А почему с k начал? можно с а
FOR /F "TOKENS=1,2,3 delims=. " %a IN ('DATE /T') DO @echo Test > %c.%b.%a.txt Начало алфавита всё таки :D |
|
|
|
|
| Сказали спасибо: |
|
|
#7
|
|
Неактивный пользователь
Регистрация: 17.04.2008
Сообщений: 30
Репутация: 6
|
Спасибо большое всем! Но аппетит приходит во время еды ))
Возник новый вопрос: А если я хочу получить в имени файла вчерашнюю дату, то как в этом случае быть? Интуиция подсказывает, что простой "FOR" тут уже не поможет. |
|
|
|
|
|
#8
|
|
Неактивный пользователь
Пол:
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
|
|
|
|
|
| Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение: |
|
|
#9
|
|
Ничего не понял по ссылке данной выше, как не пробовал ничего не получилось, можно вручную, но тут условие такое, обязательно ввести какое нибудь число, и надо чтобы это находилось в файле *.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
|
|
|
|
|
|
|
#10
|
|
Неактивный пользователь
Пол:
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
|
Передранное и малость переделанное оттуда-же
bat файл: foo.bat в конечнои итоге DD,MM,YY устанавливются соотвественно сегодняшней дате ,а PDDD, PDMM, PDYY - вчерашнему дню. Что с этими переменными делать дальше - дело хозяйское ![]() |
|
|
|
|
|
#11
|
|||||||||||||||||||||||
|
Неактивный пользователь
Регистрация: 17.04.2008
Сообщений: 30
Репутация: 6
|
О, классно! А Вы разобрались, что означают эти строки?
Я долго пыжился над параметрами после двоеточия ) Подбирал и так, и сяк. А потом осенило: это ж аналог MID в Бейсике! После "тильды" стоит количество отбрасываемых символов строки, а после "запятой" количество символов, которое затем нужно взять. В связи с этим у меня родилась идея для второго варианта решения моей первой проблемы: Второй вариант первой проблемы |
|||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#12
|
|||||||||||||||||||||||
|
Постоялец
![]() ![]() ![]() ![]() Пол:
Регистрация: 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.. Причина: Добавлено сообщение |
|||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#14
|
|||||||||||||||||||||||
|
Неактивный пользователь
Регистрация: 17.04.2008
Сообщений: 30
Репутация: 6
|
А как понять эту запись?
Что такое $tok - произвольная переменная среды или "$" что-то значит? Тем не менее, вдохновившись полученными достижениями в области числовых операций и обработки строк )) я решил обобщить вторую задачку и написал батничек, который к любой дате прибавляет (или вычитает) любое количество дней и возвращает полученную дату. Батник - ниже на Ваш суд. addday.cmd Дает, например, вот такие результаты: Код:
C:\TMP\addday 02.05.2008 +600 2009-12-23 C:\TMP\addday 23.12.2009 -600 2008-05-02 |
|||||||||||||||||||||||
|
|
|
|
|
#15
|
|
Неактивный пользователь
Пол:
Регистрация: 31.03.2005
Адрес: Tallinn
Сообщений: 48
Репутация: 16
|
set $tok=1-3
tok - временная переменная выставляемая таким образом, чтобы FOR использующий ее в качестве параметра обрабатывал нужные нам токены. А %$tok% - это подстановка (в данном случае 1-3) где надо. |
|
|
|
| Сказали спасибо: |
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| 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 |
|
|