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

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

Ответить
Настройки темы
CMD/BAT - [решено] for /l ведущий ноль

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


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

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


хочу создать список всех дат, но не пойму как автоматически добавляять ноль если число от 1 до 9

Цитата:
for /l %%y in (2003,1,2015) do (
for /l %%m in (01,01,12) do (
for /l %%d in (01,01,31) do (
echo %%y-%%m-%%d
)))2>nul
конечно понимаю что можно и так

Цитата:
%%y-0%%m-0%%d
но тогда от 10 до 31 будут тоже нули в начале

Отправлено: 22:40, 17-08-2015

 

Ветеран


Contributor


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

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


shmel_sv@vk, Просто список без проверки на правильность дат
Код: Выделить весь код
@echo off
setlocal

for /l %%y in (2003,1,2015) do (

    for /l %%m in (101,1,112) do (

        for /l %%d in (101,1,131) do call:1 %%y %%m %%d
        
))

goto:eof

:1

set m=%2
set d=%3

echo %1-%m:~-2%-%d:~-2%
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:39, 18-08-2015 | #2



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

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


Ветеран


Contributor


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

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


Цитата shmel_sv@vk:
хочу создать список всех дат »


А Вас не смущает наличие в Вашем списке таких дат, как 31 февраля или 31 июня?

С учётом необходимости вывода правильного числа дней в месяцах (в т. ч. и 29-ти дней в феврале високосных годов) могу предложить код на PowerShell:
Код: Выделить весь код
0..(New-TimeSpan ($d='01.01.2003') '31.12.2015').Days|%{Get-Date (Get-Date $d).AddDays($_) -f 'yyyy-MM-dd'}
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:42, 18-08-2015 | #3


Ветеран


Contributor


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

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


shmel_sv@vk, То же, что и у Foreigner без контроля правильности дат.
Код: Выделить весь код
@Echo Off

SetLocal EnableExtensions EnableDelayedExpansion

FOR /L %%g IN (2001,1,2015) DO (
	FOR /L %%m IN (101,1,112) DO (
		Set mm=%%m
		FOR /L %%d IN (101,1,131) DO (
			Set dd=%%d
			Echo %%g-!mm:~-2!-!dd:~-2!
)))
Или
Код: Выделить весь код
@Echo Off

SetLocal EnableExtensions EnableDelayedExpansion

FOR /L %%g IN (20010000,10000,20150000) DO (
	FOR /L %%m IN (10100,100,11200) DO (
		FOR /L %%d IN (101,1,131) DO (
			Set /A DT=%%g+%%m+%%d-10100
			Echo !DT:~0,4!-!DT:~4,2!-!DT:~6,2!
)))
Но я не вижу в этом никакого смысла. Зачем нужна предложенная задача? Это кусок какой-то бОльшей задачи? Может не надо так упрощать?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-08-2015 в 19:59.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:28, 18-08-2015 | #4


Ветеран


Contributor


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

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


Цитата megaloman:
Зачем нужна предложенная задача? Это кусок какой-то бОльшей задачи? Может не надо так упрощать? »
Может, человек пишет продолжения календаря майя .

Отправлено: 19:32, 18-08-2015 | #5


Ветеран


Contributor


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

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


Цитата Georgio:
С учётом необходимости вывода правильного числа дней в месяцах (в т. ч. и 29-ти дней в феврале високосных годов) »


Ради "спортивного" интереса написал код для пакетного файла с выводом результата в файл "Dates.txt":

Код: Выделить весь код
@>"Dates.txt" (
for /l %%y in (2003 1 2015) do @(
 for /l %%m in (1 1 12) do @(
  for /l %%d in (1 1 31) do @(
   for %%? in (2 4 6 9 11) do @(
    if %%m%%d equ %%?31 set ?=?
   )
   if %%m%%d equ 230 set ?=?
   for /f %%? in ('set/a %%y%%4') do @(
    for /l %%* in (1 1 3) do @(
     if %%?%%m%%d equ %%*229 set ?=?
    )
   )
   if not defined ? <nul (
    set/p=%%y-
    (if %%m leq 9 set/p=0)& set/p=%%m-
    (if %%d leq 9 set/p=0)& echo %%d
   )
   set ?=
  )
 )
)
)
.

Код получился немного "авангардным" и нетрадиционным, но, вопреки ожиданию, не очень "громоздким".
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:43, 18-08-2015 | #6


Ветеран


Contributor


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

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


Цитата Georgio:
Ради "спортивного" интереса написал код для пакетного файла ... С учётом необходимости вывода правильного числа дней в месяцах (в т. ч. и 29-ти дней в феврале високосных годов)
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

FOR /L %%g IN (2001,1,2016) DO (
	Set /A VG=%%g/4*4
	Set "Cal=131 228 331 430 531 630 731 831 930 1031 1130 1231"
	If !VG!==%%g Set "Cal=131 229 331 430 531 630 731 831 930 1031 1130 1231"
 	For %%m In (!Cal!) Do (
		Set /A DD=%%m/100*100+1
		FOR /L %%d IN (!DD!,1,%%m) DO (
			Set /A DT=%%g*10000+%%d
			Echo !DT:~0,4!-!DT:~4,2!-!DT:~6,2!
)))
Код получился не очень "громоздким", но всё равно, в чём смысл, от меня ускользает.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:22, 19-08-2015 | #7


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


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

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


спасибо всем большое!!!!

Отправлено: 12:29, 19-08-2015 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ведущий разработчик Google Glass перешёл в Amazon OSZone News Новости информационных технологий 0 15-07-2014 19:30
[решено] Скорость передачи USB-модема 0 (ноль) Pensik Лечение систем от вредоносных программ 24 17-03-2013 09:15
Умер ведущий "Городка" Илья Олейников Tigr Флейм 8 12-11-2012 16:23
я полный ноль-помогите обновить пк yyx Выбор отдельных компонентов компьютера и конфигурации в целом 4 23-09-2011 09:39
Как снести LINUX под ноль? illusionmgs Хочу все знать 22 22-06-2011 09:18




 
Переход