<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Обработка архивов по дате создания]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7803&amp;type=atom" />
	<updated>2013-01-25T12:34:59Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7803</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=68842#p68842" />
			<content type="html"><![CDATA[<p><span style="color: Green"><strong>fdv-220v-sever</strong>, не надо дублировать посты, тем более в не подходящих по смыслу темах.</span></p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-01-25T12:34:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=68842#p68842</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=68839#p68839" />
			<content type="html"><![CDATA[<p>у меня такое задание:сделать bat-файл, чтобы при его выполнении архив из одной папки(основной) делал резервная копю..например c:\DB\f.rar в с:\DB\f1.1.01.13.rar<br />Каждый раз копирование происходило c новой датой(допустим один день - c:\DB\f1.01.13.ra, второй - c:\DB\f2.01.13.rar, третий - c:\DB\f3.01.13.rar и тд..)<br />то есть резервное копирование архива за каждый день<br />может у кого-то есть готовый такой батник! я не особо в этом разбираюсь, но преподаватель дал такое задание..<br />кто-то может помочь?</p>]]></content>
			<author>
				<name><![CDATA[fdv-220v-sever]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29481</uri>
			</author>
			<updated>2013-01-25T12:21:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=68839#p68839</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66035#p66035" />
			<content type="html"><![CDATA[<p>Спасибо огромное за ответы. Rumata - точно пригодится.<br />Но сейчас мне нужно помочь найти ошибку вот здесь:</p><p>FOR /F &quot;tokens=1-6,* delims=.: &quot; %%A in (%temp%\files.lst) do (</p><p>)<br />в теле цикла почему-то не сравниваются расчет текущей даты по юлианскому календарю и даты создания архива также переведенного на юлианский календарь? Я не могу понять почему.<br />%JDN% и %JDN2% рассчитываются правильно, но как только я ставлю расчет %JDN2% в цикл у меня ничего не работает.</p>]]></content>
			<author>
				<name><![CDATA[Lrv]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29032</uri>
			</author>
			<updated>2012-11-23T05:34:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66035#p66035</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66027#p66027" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rom5 пишет:</cite><blockquote><p>выполнить копирование файлов только за указанную дату</p></blockquote></div><p>Это хорошо, когда надо скопировать <strong>любые</strong> файлы. Если же требуется заданные имена файлов (как в задаче), то без конструирования шаблонов не обойтись. </p><p>Почитал<br /></p><div class="codebox"><pre><code>xcopy /?
robocopy /?</code></pre></div><p>Они так не умеют. Если все же надо выбирать определенные файлы по шаблону, то как-то так. Возможно и есть путь проще, но мне он не известен. </p><div class="codebox"><pre><code>@echo off


setlocal enabledelayedexpansion


:: вычисляем компоненты времени 
call :get_time

:: создаем поисковый шаблон
call :create_template

::set timestamp
::set search

:: полезный код: что-то делаем с заданными файлами
dir &quot;%search_tmpl%&quot;

goto :EOF


:: выбираем элементы даты/времени и
:: сохраняем в переменных окружения
:: элементы выравнивается вправо добавлением нулей
:get_time
for /f &quot;tokens=1,2 delims==&quot; %%i in (
    &#039;wmic path win32_localtime get /value ^| findstr /v &quot;^$&quot;&#039;
) do (
    call set timestamp_%%i=%%j
    if not &quot;%%~i&quot; == &quot;Year&quot; (
        set timestamp_%%i=00!timestamp_%%i!
        set timestamp_%%i=!timestamp_%%i:~-2!
rem    ) else (
rem        set timestamp_YearShort=!timestamp_Year:~-2!
rem        set timestamp_Century=!timestamp_Year:~0,2!
    )
)
goto :EOF


:: создаем последовательно 
:: шаблоны для даты и имени файла
:create_template
set &quot;search_date=%timestamp_Year%_%timestamp_Month%_%timestamp_Day%&quot;
set &quot;search_tmpl=Inf#*_*#%search_date%#*.zip&quot;
goto :EOF</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2012-11-22T17:20:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66027#p66027</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66024#p66024" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p><strong>Lvr</strong>, для чего Вы используете знак собачки в каждой строке, когда можно просто указать в начале <strong>@echo off</strong>, дабы избавиться от эха комманд? <br />....</p></blockquote></div><p>Я такой прием тоже использую, когда эхо у части команд интересует, а у части нет. Правда когда интересующих команд всего 4-е строчки то легче вначале батника выключить, а перед интересующими строками - временно включить.</p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2012-11-22T16:35:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66024#p66024</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66023#p66023" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>xcopy путь\*.zip [куда] /d:mm-dd-yyyy</code></pre></div><p>чтобы не парсить список для разбира даты файлов можно сразу же выполнить копирование файлов только за указанную дату, только с требуемым в команде представлением день-месяц-год надо на конкретной машине разобраться.</p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2012-11-22T16:29:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66023#p66023</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66013#p66013" />
			<content type="html"><![CDATA[<p><strong>Lvr</strong>, для чего Вы используете знак собачки в каждой строке, когда можно просто указать в начале <strong>@echo off</strong>, дабы избавиться от эха комманд? Это во-первых. Во-вторых, лично мне не понятен разбор даты: </p><div class="quotebox"><cite>Lvr пишет:</cite><blockquote><p>@echo %date%<br />@set day=%date:~0,2%<br />@if %day:~0,1%==0 set day=%day:~1,1%</p></blockquote></div><p>Может все же </p><div class="codebox"><pre><code>@echo off
...
set today=%date:.=%
::в итоге легче парсить дату
set day=%today:~0,2%
set month=%today:~3,2%
set year=%today:~5,4%</code></pre></div><p>Также следует учитывать, что переменая %date% зависит от локали.<br />В-третьих, чтобы копировать архив по дате в заголовке вовсе не обязательно писать сложные конструкции, а следует обратить внимание на регулярные выражения.</p>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2012-11-22T13:52:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66013#p66013</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66007#p66007" />
			<content type="html"><![CDATA[<p><span style="color: Green"><strong>Lrv</strong>, добавьте префикс «CMD/BAT: » в заголовок темы. Оформите код при помощи <a href="http://forum.script-coding.com/help.php#bbcode">тэга «сode»</a>.</span></p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-11-22T12:24:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66007#p66007</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Обработка архивов по дате создания]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66006#p66006" />
			<content type="html"><![CDATA[<p>Здравствуйте!</p><p>В папке лежат файлы архивов вида Inf#1_496766#2012_11_20#23_09_10.zip их нужно обработать, но для это скопировать по текущей дате только архивы этого дня в отдельную папку.</p><p>Я написала по аналогичным примерам, но в цикле, когда прохожу файлы в каталоге не получается вставить сравнение дат:<br /></p><div class="codebox"><pre><code>@echo on
@cd %1
@cd ?a»?«??
@rem j -- ¬??N???

@echo %date%
@set day=%date:~0,2%
@if %day:~0,1%==0 set day=%day:~1,1%
@set mes=%date:~3,2%
@if %mes:~0,1%==0 set mes=%mes:~1,1%
@set god=%date:~6,4%

:STEP1
@set /a JDN=%day%+((153*(%mes%+(12*((14-%mes%)/12))-3)+2)/5)+(365*(%god%+4800-((14-%mes%)/12)))+((%god%+4800-((14-%mes%)/12))/4)-((%god%+4800-((14-%mes%)/12))/100)+((%god%+4800-((14-%mes%)/12))/400)-32045

set FOLDER=C:\Internet
if exist %temp%\files.lst del %temp%\files.lst
FOR %%A in (%FOLDER%\*.*) do @echo %%~txA &quot;%%A&quot;  &gt;&gt;%temp%\files.lst
FOR /F &quot;tokens=1-6,* delims=.: &quot; %%A in (%temp%\files.lst) do (

@set day2= %%A
@set mes2=%%B
@set god2=%%C

@set /a JDN2=%day2%+((153*(%mes2%+(12*((14-%mes2%)/12))-3)+2)/5)+(365*(%god2%+4800-((14-%mes2%)/12)))+((%god2%+4800-((14-%mes2%)/12))/4)-((%god2%+4800-((14-%mes2%)/12))/100)+((%god2%+4800-((14-%mes2%)/12))/400)-32045

@set /a dif=%JDN%-%JDN2%

@If %dif% EQU 0 (GOTO STEP4) ELSE (GOTO STEP5)

:STEP4
copy %%G  С:\Arhiv\%%A_%%B_%%C_00.%%F 

:STEP5

&quot;C:\Program Files\WinRAR\winrar.exe&quot; x  *.zip *.*
)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Lrv]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29032</uri>
			</author>
			<updated>2012-11-22T12:03:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66006#p66006</id>
		</entry>
</feed>
