Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переменная Дня недели

Ответить
Настройки темы
CMD/BAT - [решено] Переменная Дня недели

Пользователь


Сообщения: 109
Благодарности: 20

Профиль | Отправить PM | Цитировать


Всем доброе время суток!

Подскажите, пожалуйста, какую команду нужно написать, чтобы создать папку с именем текущего дня недели?

Заранее благодарен!

Отправлено: 17:27, 10-03-2009

 

Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Цитата ratibor79:
создать папку с именем текущего дня недели »
Попробуй так

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 07:10, 11-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для gora

дважды дед


Contributor


Сообщения: 6042
Благодарности: 3487

Профиль | Отправить PM | Цитировать


ratibor79, нашел у себя в "залежах":
Код: Выделить весь код
@echo off

:: format: dd.mm.yyyy

echo %date%
set /a y=%date:~6,4%&set /a m=%date:~3,2%&set /a d=%date:~0,2%
set /a i=(%y%-1901)*365 + (%y%-1901)/4 + %d% + (!(%y% %% 4))*(!((%m%-3)^&16))
echo %i%
set /a i=(%i%+(%m%-1)*30+2*(!((%m%-7)^&16))-1+((65611044^>^>(2*%m%))^&3))%%7+1
echo %i%
REM (igor_andreev)

for /f "tokens=%i% delims=/" %%a in ('
echo/Понедельник/Вторник/Среда/Четверг/Пятница/Суббота/Воскресенье') do set "w=%%a"
for /f "tokens=%date:~3,2% delims=/" %%a in ('
ECHO/Января/Февраля/Марта/Апреля/Мая/Июня/Июля/Августа/Сентября/Октября/Ноября/Декабря/') do set "mmm=%%a"

echo %w% %d% %mmm% %y%
pause
Что не нужно удалите.

Отправлено: 13:50, 11-03-2009 | #3


Пользователь


Сообщения: 109
Благодарности: 20

Профиль | Отправить PM | Цитировать


gora, спасибо. Как раз то что доктор прописал.

Отправлено: 16:27, 11-03-2009 | #4


Пользователь


Сообщения: 109
Благодарности: 20

Профиль | Отправить PM | Цитировать


gora Вот только что сталкнулся с ошибкой

Обратите пожалуйста внимание на 8 или 9 числа любого месяца

C:\TEMP>set /a y=2009 & set /a m=02 & set /a d=09
Неправильное число. Числовые константы должны быть десятичными (17)
шестнадцатеричными (0x11),или восьмеричными (021).

C:\TEMP>set /a i=(2009-1901)*365 + (2009-1901)/4 + + (!(2009 % 4))*(!((2-3)&16))

C:\TEMP>set /a i=(39447+(2-1)*30+2*(!((2-7)&16))-1+((65611044>>(2*2))&3))%7+1

C:\TEMP>for /F "tokens=6 delims=/" %a in (' echo/Понедельник/Вторник/Среда/Четве
рг/Пятница/Суббота/Воскресенье') do set "w=%a"

C:\TEMP>set "w=Суббота"

C:\TEMP>for /F "tokens=02 delims=/" %a in (' ECHO/Января/Февраля/Марта/Апреля/Ма
я/Июня/Июля/Августа/Сентября/Октября/Ноября/Декабря/') do set "mmm=%a"

C:\TEMP>set "mmm=Февраля"

C:\TEMP>echo Суббота Февраля 2009
Суббота Февраля 2009

9 февраля - это был понедельник

Отправлено: 17:18, 11-03-2009 | #5


Аватара для gora

дважды дед


Contributor


Сообщения: 6042
Благодарности: 3487

Профиль | Отправить PM | Цитировать


Цитата ratibor79:
только что сталкнулся с ошибкой »
Скрипт не мой и досканально его не проверял, но проблема легко решается. Немного подправил:
Код: Выделить весь код
@echo off
:: format: dd.mm.yyyy
:: кодировка кирилица DOS (866)
echo %date%
set /a y=%date:~6,4%&set /a m=1%date:~3,2%-100&set /a d=1%date:~0,2%-100
set /a i=(%y%-1901)*365 + (%y%-1901)/4 + %d% + (!(%y% %% 4))*(!((%m%-3)^&16))
set /a i=(%i%+(%m%-1)*30+2*(!((%m%-7)^&16))-1+((65611044^>^>(2*%m%))^&3))%%7+1
::  (igor_andreev)
for /f "tokens=%i% delims=/" %%a in ('
echo/Понедельник/Вторник/Среда/Четверг/Пятница/Суббота/Воскресенье') do set "w=%%a"
for /f "tokens=%m% delims=/" %%a in ('
ECHO/Января/Февраля/Марта/Апреля/Мая/Июня/Июля/Августа/Сентября/Октября/Ноября/Декабря/') do set "mmm=%%a"
echo %w% %d% %mmm% %y%
pause>nul
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:25, 11-03-2009 | #6


Пользователь


Сообщения: 109
Благодарности: 20

Профиль | Отправить PM | Цитировать


gora
Вот спасибочки работает

Отправлено: 19:23, 11-03-2009 | #7


Googler


Сообщения: 3665
Благодарности: 1560

Профиль | Отправить PM | Цитировать


Можно решить задачку элегантней, но для этого придется предварительно скомпилировать WMIC псевдоним для WMI класса Win32_LocalTime, после этого можно будет легко получать любые параметры текущей даты, включая номер квартала, номер недели в месяце и т.д. MOF-файл (файл в WIN-кодировке):
Код: Выделить весь код
#pragma namespace("\\\\.\\ROOT\\Cli")

instance of MSFT_CliAlias
{
Connection =
instance of MSFT_CliConnection
{
Locale = "ms_409";
NameSpace = "ROOT\\CIMV2";
Server = ".";
};
Description = "Местное время";
Formats = 
{
instance of MSFT_CliFormat
{
Format = "TABLE";
Name = "BRIEF";
Properties = 
{
instance of MSFT_CliProperty            
{
Derivation = "DayOfWeek";
Description = "День недели";
Name = "DayOfWeek";
}, 
instance of MSFT_CliProperty
{
Derivation = "Year";
Description = "Год";
Name = "Year";
},
instance of MSFT_CliProperty
{
Derivation = "Month";
Description = "Месяц";
Name = "Month";
},
instance of MSFT_CliProperty
{
Derivation = "Day";
Description = "Число";
Name = "Day";
}, 
instance of MSFT_CliProperty
{
Derivation = "Hour";
Description = "Часы";
Name = "Hour";
},
instance of MSFT_CliProperty
{
Derivation = "Minute";
Description = "Минуты";
Name = "Minute";
},
instance of MSFT_CliProperty
{
Derivation = "Second";
Description = "Секунды";
Name = "Second";
}};
}, 
instance of MSFT_CliFormat
{
Format = "VALUE";
Name = "FULL";
Properties = 
{
instance of MSFT_CliProperty            
{
Derivation = "DayOfWeek";
Description = "День недели";
Name = "DayOfWeek";
}, 
instance of MSFT_CliProperty            
{
Derivation = "WeekInMonth";
Description = "Неделя месяца";
Name = "WeekInMonth";
}, 
instance of MSFT_CliProperty
{
Derivation = "Year";
Description = "Год";
Name = "Year";
},
instance of MSFT_CliProperty
{
Derivation = "Quarter";
Description = "Квартал";
Name = "Quarter";
},
instance of MSFT_CliProperty
{
Derivation = "Month";
Description = "Месяц";
Name = "Month";
},
instance of MSFT_CliProperty
{
Derivation = "Day";
Description = "Число";
Name = "Day";
}, 
instance of MSFT_CliProperty
{
Derivation = "Hour";
Description = "Часы";
Name = "Hour";
},
instance of MSFT_CliProperty
{
Derivation = "Minute";
Description = "Минуты";
Name = "Minute";
},
instance of MSFT_CliProperty
{
Derivation = "Second";
Description = "Секунды";
Name = "Second";
},
instance of MSFT_CliProperty
{
Derivation = "MilliSeconds";
Description = "Миллисекунды";
Name = "MilliSeconds";
}};
}, 
instance of MSFT_CliFormat
{
Format = "Table";
Name = "SYSTEM";
Properties = 
{
instance of MSFT_CliProperty
{
Derivation = "__PATH";
Name = "__PATH";
}, 
instance of MSFT_CliProperty
{
Derivation = "__NAMESPACE";
Name = "__NAMESPACE";
}, 
instance of MSFT_CliProperty
{
Derivation = "__SERVER";
Name = "__SERVER";
}, 
instance of MSFT_CliProperty
{
Derivation = "__PROPERTY_COUNT";
Name = "__PROPERTY_COUNT";
}, 
instance of MSFT_CliProperty
{
Derivation = "__RELPATH";
Name = "__RELPATH";
}, 
instance of MSFT_CliProperty
{
Derivation = "__DYNASTY";
Name = "__DYNASTY";
}, 
instance of MSFT_CliProperty
{
Derivation = "__SUPERCLASS";
Name = "__SUPERCLASS";
}, 
instance of MSFT_CliProperty
{
Derivation = "__GENUS";
Name = "__GENUS";
}, 
instance of MSFT_CliProperty
{
Derivation = "__CLASS";
Name = "__CLASS";
}};
}};
FriendlyName = "LocalTime";
PWhere = "Where Name='#'";
Target = "Select * From Win32_LocalTime";
};
Процедура компиляции (через MOFComp) одноразовая, но можно реализовать условную компиляцию... Например, если имя MOF-файла совпадает с именем CMD-файла, то для обеспечения корректной работы батника на любом компьютере можно добавить в начало скрипта две строчки:
Код: Выделить весь код
WMIC LocalTime Get DayOfWeek >Nul
If ErrorLevel 1 MOFComp "%~dpn0.mof"
пример батника, использующего созданный псевдоним (DOS-кодировка):
Код: Выделить весь код
@Echo Off

For /F "Skip=1" %%i In ('WMIC LocalTime Get DayOfWeek') Do Set DayOfWeek=%%i
For /F "Tokens=%DayOfWeek% Delims=," %%i In ("Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье") Do Set DayOfWeekName=%%i

Echo Сегодня %DayOfWeekName%,
Echo это %DayOfWeek%-й день недели
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:07, 13-03-2009 | #8



Moderator


Сообщения: 49258
Благодарности: 13992

Профиль | Отправить PM | Цитировать


Цитата amel27:
но для этого придется предварительно скомпилировать WMIC псевдоним
А зачем компилировать? можно ведь сразу:
Код: Выделить весь код
WMIC Path Win32_LocalTime Get DayOfWeek
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:25, 13-03-2009 | #9


Googler


Сообщения: 3665
Благодарности: 1560

Профиль | Отправить PM | Цитировать


Цитата Petya V4sechkin:
А зачем компилировать? »
спасибо, не знал, что можно без псевдонимов... проглядел

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум


Отправлено: 15:37, 13-03-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переменная Дня недели

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] как сделать доступ к папкам по дням недели? Steven21 Microsoft Windows NT/2000/2003 15 10-12-2009 17:11
Глобальная переменная 11943499 AutoIt 9 23-07-2009 20:58
[решено] Выход из функции, если переменная не задана D_Master AutoIt 2 19-02-2009 15:05
Интерфейс - [решено] Дни недели и месяца на украинском!Как убрать? Voodoo Child Microsoft Windows Vista 3 07-04-2008 11:06
День недели Hard Программирование и базы данных 5 23-09-2002 07:27




 
Переход