Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

bat cmd файлы   Найти похожие ветки 

 
Drakosha ©   (2005-05-26 11:38) [0]

Может не совсем делфовый вопрос. Как из .bat или .cmd файла создать каталог с текущей датой.


 
P.N.P. ©   (2005-05-26 11:42) [1]

mkdir c:\%DATE%


 
Drakosha ©   (2005-05-26 11:49) [2]

:) .. как просто то.
Попутно ещё пара вопросов.
1. Как ещё добавить время
2. Можно ли изменить формат даты например 2005.05.21


 
Гость2   (2005-05-26 15:35) [3]


> mkdir c:\%DATE%

А у меня почему-то команда не сработала :-(. Говорит - нельзя создать директорию.


 
wicked ©   (2005-05-26 16:06) [4]


> А у меня почему-то команда не сработала :-(. Говорит - нельзя
> создать директорию.

ибо зависит от системных настроек... если сепаратор даты "." - то всё ок, точка допустима в именах, если же "/" - то увы...
ЗЫ это всё догадки, не проверял...


 
Alexander Panov ©   (2005-05-26 16:09) [5]

@DATE /T>c:\temp\currdate.txt

@for /F "eol=: tokens=2 delims=. " %%i in (c:\temp\currdate.txt) do SET D=%%i
@for /F "eol=: tokens=3 delims=. " %%i in (c:\temp\currdate.txt) do SET M=%%i
@for /F "eol=: tokens=4 delims=. " %%i in (c:\temp\currdate.txt) do SET Y=%%i

@for /F "eol=: tokens=1 delims=: " %%i in (c:\temp\currtime.txt) do SET HH=%%i
@for /F "eol=: tokens=2 delims=: " %%i in (c:\temp\currtime.txt) do SET NN=%%i

SET YMD=%Y%-%M%-%D%


 
Vovchik_A ©   (2005-05-26 16:17) [6]

@date /t
@time /t
set DT=%date%
set DD=%dt:~4,2%
set MM=%dt:~7,2%
set YY=%dt:~10,4%
md U:\UIIVPOST\DAILY\RECEIVED\%YY%%MM%%DD%


 
Alexander Panov ©   (2005-05-26 16:19) [7]

Vovchik_A ©   (26.05.05 16:17) [6]
гыг...
Про переменную %date% не знал.


 
Vovchik_A ©   (2005-05-26 16:21) [8]

2Alexander Panov ©   (26.05.05 16:19) [7]

Теперь знаешь :) у меня так почта НБУ архивируется по дням


 
stud ©   (2005-05-26 16:24) [9]

это не тестовое задание случайно?


 
Drakosha ©   (2005-05-26 17:09) [10]

:)))  ну вы и наворотили тут батничек
я нашёл менее крутой способ форматирования даты
set ardir=%cd%\%date:~8,2%.%date:~3,2%.%date:~0,2%
mkdir %ardir%


 
Vovchik_A ©   (2005-05-26 17:13) [11]

2Drakosha ©   (26.05.05 17:09) [10]

Тебе предлагалось то же самое в Vovchik_A ©   (26.05.05 16:17) [6]
причем, решение более гибкое, чем твое.


 
Drakosha ©   (2005-05-27 10:01) [12]

Всем сенкс!
Но появился ещё вопросик :)
Как создать папку с именем(или номером) дня недели.
Прошу учесть что date может вернуть "Чет 26.05.2005"  а может и просто 26.05.2005. Тобишь привязываться к первому варианту не нужно.

Жду идей.

зы
2 Vovchik_A ©
Если форормат даты установлен как в первом случае то твоё решение не пройдёт. Я исспользовал следующее %date:~-4,4% для получения года


 
Val ©   (2005-05-27 12:13) [13]

можно и я спрошу - а удаление с исключением по маске?


 
Vovchik_A ©   (2005-05-27 12:26) [14]

2Drakosha ©   (27.05.05 10:01) [12]

Ты эта... Позиции считай правильно что вырезать. А как там формат даты задан дело 16-ое.


 
Drakosha ©   (2005-05-27 13:43) [15]

>Я исспользовал следующее %date:~-4,4% для получения года

2 Vovchik_A ©
а что тут не правильно? я просто режу в другую сторону ... тобишь с конца


 
Vovchik_A ©   (2005-05-27 13:57) [16]

2Drakosha ©   (27.05.05 13:43) [15]

Да ради бога


 
Drakosha ©   (2005-05-27 14:40) [17]

:)
тему пока закрывать


 
Суслик ©   (2005-06-02 20:46) [18]

Странно, но чтобы заработал код из [6]

@date /t
@time /t
set DT=%date%
set DD=%dt:~4,2%
set MM=%dt:~7,2%
set YY=%dt:~10,4%
md U:\UIIVPOST\DAILY\RECEIVED\%YY%%MM%%DD%

мне пришлось переделать его в

@date /t
@time /t
set DT=%date%
set DD=%dt:~3,2%
set MM=%dt:~6,2%
set YY=%dt:~9,4%
md U:\UIIVPOST\DAILY\RECEIVED\%YY%%MM%%DD%

Т.е. индексация от 0, а не от 1.

Почему так?


 
Alex Konshin ©   (2005-06-02 23:43) [19]

Я тут повторюсь:

На XP:
1.На десктопе кликнете F1
2.Тыкаем на любом пуктике слева.
3.Внизу слева кликаем на Tools.
4.Нижние три папки слева - "Command-line reference A-Z" и т.п. - это то, что мы ищем. Например в первой папке описаны такие команды, как for, find, findstr.

На Win2K:
1.На десктопе кликнете F1
2. Contents->Reference->MS-DOS Commands

Прмямой путь в XP такой:
ms-its:E:\WINNT\Help\ntcmds.chm::/ntcmds.htm
Ее можно открыть в IE, но при этом лично у меня не показвает scrollbar справа.

Могу поделиться некими приемами применения bat, до которых трудно догадаться.

1.Как получить полный путь к директорию bat-файла?
for /D %%I in ("%~dp0.") do set PROJECT_HOME=%%~fI
Аналогично получаются имя директория:
for /D %%I in ("%~dp0.") do set PROJECT=%%~nI
Ну, как достать короткие имена вы уж сами догадаетесь.
Надеюсь понятно, что вместо %~dp0. можно подставить и другие выражения.

2.Как распарсить некую переменную?
Тоже через for. Применяем его способность парсить вывод команды, в данном случае echo. Пример:

set IEJAVACLASS=IECanvas
set nativeclasses=%IEJAVACLASS%,HTMLElementIE,IEObject,HTMLNodeIE,HTMLTextIE,HTMLDocumentIE,HTMLCollectionIE,HTMLCaretIE,HTM  LPointerIE,HTMLMarkupPointerIE,HTMLSegmentIE,HTMLSelectionSegmentIE,HTMLHighlightSegmentIE,HTMLLineInfoIE,HTMLRendererEx  ceptionIE,HTMLAttributeIE
set javafiles=
set JAVAHFILES=
set GENJNIFILES=
set javaclasses=
set list=%nativeclasses%,
:processlist
for /F "usebackq eol=, tokens=1*" %%I in (`echo %list%`) do (
  set javafiles=%javafiles% %JSRC%\%%I.java
  set javaclasses=%javaclasses% %package%.%%I
  set GENJNIFILES=%GENJNIFILES% %GENJNI%\%%I.h
  set JAVAHFILES=%JAVAHFILES% %JOUT%\%%I.class
  set list=%%J
)
if "%list%" NEQ "" goto processlist

3.Как прочитать что-нибудь из файла?
Обычно нужно прочитать какой-то тектовый файл и достать из него какую-то информацию. Например, прочитать некий конфиг.
Я использую для этого findstr и опять-таки for. Findstr выдает искомые строчки, а for их парсит.
В примере читается значение, заключенное в апострофы из строки файла, начинающейся с "jdkhome = "", т.е. в конфиге она выглядит примерно так:
jdkhome = "C:\jdk1.4";
А вот и сам пример:

for /F "usebackq delims=" tokens=2*" %%I in (`findstr /r "^jdkhome *= *"" "%ARTSC_IA_HOME%\build.config"`) do (
set JAVA_HOME=%%I
)


 
Alex Konshin ©   (2005-06-02 23:45) [20]

Мой вариант посложнее, но зато не содержит явных смещений:


@echo off
echo %%DATE%%=%DATE%

@for /F "usebackq tokens=1* delims= " %%I in (`echo %DATE%`) do (
 set DAY_OF_WEEK=%%I
 set ONLY_DATE=%%J
)

echo %%ONLY_DATE%%=%ONLY_DATE%

@for /F "usebackq tokens=1,2,3* delims=/" %%I in (`echo %ONLY_DATE%`) do (
 set MM=%%I
 set DD=%%J
 set YYYY=%%K
)

echo %YYYY%%DD%%MM%


 
Alex Konshin ©   (2005-06-02 23:46) [21]

Да, я обращаю внимание, что у меня в примере американские разделители и порядок представления даты


 
Alex Konshin ©   (2005-06-02 23:48) [22]

От, поторопился...
в последней строчке должно быть
echo %YYYY%%MM%%DD%



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.041 c
4-1112515772
ssmaxx
2005-04-03 12:09
2005.06.29
Рисование на панели


9-1111691522
Bret
2005-03-24 22:12
2005.06.29
Cosmos4D


1-1118140307
Sigetta
2005-06-07 14:31
2005.06.29
Размер exe-шника


1-1118069208
Эдик Дятлов
2005-06-06 18:46
2005.06.29
Сохранить запись, содержащую динамический массив, в файл


3-1116407444
Iova
2005-05-18 13:10
2005.06.29
InterBase с помощью ADO.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский