Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.028 c
14-1117618035
peypivo
2005-06-01 13:27
2005.06.29
SMS марафон


14-1117306783
P.N.P.
2005-05-28 22:59
2005.06.29
Орешник


3-1116571267
~Alex
2005-05-20 10:41
2005.06.29
Блокировки таблиц


1-1118128230
Dmitrij_K
2005-06-07 11:10
2005.06.29
Модалиные формы


3-1116325528
Dell3r
2005-05-17 14:25
2005.06.29
Ошибка при выполении запроса