Форум: "Потрепаться";
Текущий архив: 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.5 MB
Время: 0.049 c