Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 2

Автор: igor_andreev
Дата сообщения: 11.01.2007 17:33
StanislavG

Цитата:
чуть не забыл батник находит файлы за прошедший день

А ты попробуй не залезать в дебри батникописания, а почитать справку к ARJ В идеале, если запускать по планировщику в 23:59 - можно вообще одной строчкой обойтись. Ну на крайняк один день то уж от сегодняшней даты легко отнять.

Это кусочек того, что выдает русский http://arj.sourceforge.net/

Цитата:

n: только новые (несуществующие) файлы
o: файлы, изм. по/после ГГГГММДДЧЧММСС
o: сегодня
o19901225: по/после 25/12/1990
ob: файлы, изм. до ГГГГММДДЧЧММСС
ob: раньше, чем сегодня
ob19901225: раньше 25/12/1990
od: изм. не ранее, чем N дней назад
od5: пять или меньше дней назад
oa: файлы, использ. после ГГГГММДДЧЧММСС
oa: сегодня
oa19901225: после 25/12/1990
oab: файлы, использ. до ГГГГММДДЧЧММСС
oab: раньше, чем сегодня
oab19901225: раньше 25/12/1990
oc: файлы, созд. после ГГГГММДДЧЧММСС
oc: сегодня
oc19901225: после 25/12/1990
ocb: файлы, созд. ГГГГММДДЧЧММСС
ocb: раньше, чем сегодня
ocb19901225: раньше 25/12/1990


<Вторичные ключи>
h#: текущая дата -> название архива
h#1: текущее время -> название архива
h#2: дата/время (ДЧЧММСС) -> назв.
(формат: h#{Y,M,D,N,h,m,s})
h#YYYY-MMDD: дополнить ГГГГ-ММДД
Автор: StanislavG
Дата сообщения: 11.01.2007 17:50
Elroir

Давай так у меня есть 25 файлов с датой создания 10.01.2007 мне надо их за архивировать так что-бы имя архива было jour1001.arj при этом вся операция(сбор и архивирование) будет проходить 11.01.2007. Передомной стоит задача сделать батник так что-бы он 11.01.2007 собирал файлы с датой создания 10.01.2007 и заархивировал как я выше написал. первую часть батника я выложил по сбору файлов. Помогите чем сможите

Добавлено:
igor_andreev

Эти файлы типа логов если я их собиру 10 числа то потеряю часть информации
Автор: Elroir
Дата сообщения: 11.01.2007 18:17
StanislavG
Вот теперь понятно.
Поменяй set fd=%5,set fm=%6,set fy=%7 обратно на set fd=%1,set fm=%2,set fy=%3.
После этого в директории test у тебя будут файлы созданные вчера. Дальше запускай команду архивации и подставляй в название создаваемого архива %prevd%%prevm%.
А чем не нравится то, что предложил igor_andreev? Используй условие "файлы созданные после позавчера" и "файлы созданные раньше, чем сегодня".
Автор: StanislavG
Дата сообщения: 11.01.2007 18:28
Elroir

Да вот пробую Большое спасибо

Добавлено:
Elroir

А еще есть пару вопрос


Цитата:
1.Можно ли как то поставить таймер что-бы например в 1 час ночи запустился батник;



Цитата:
2.И как сделать что-бы по окончанию цикла батника запустился архиватор


Автор: Elroir
Дата сообщения: 11.01.2007 19:02
StanislavG

Цитата:
Можно ли как то поставить таймер что-бы например в 1 час ночи запустился батник

Можно:

Код: at 01:00 /every:M,T,W,Th,F,S,Su c:\utilities\archive.cmd
Автор: StanislavG
Дата сообщения: 11.01.2007 20:24
Elroir

А если батник в Винде не запускаеться что может быть
Автор: Elroir
Дата сообщения: 11.01.2007 20:31
StanislavG
Что значит не запускается? Как это выглядит? "В Винде" - ты имеешь в виду из эксплорера, а не из командной строки?
Автор: Tipulatoid
Дата сообщения: 12.01.2007 00:17
Elroir
Спасибо большое. Жаль, тут плюсы не выставляются.
Автор: evgeni666
Дата сообщения: 12.01.2007 01:27
StanislavG
Твоя задача решается намного проще.

arc.bat

Цитата:

IF "%1" NEQ "" GOTO %1

:: директория, с файлами, которые надо паковать
set source_dir=c:\temp
:: директория, куда кладем архивы
set dest_dir=c:\arc
:: путь до архиватора
set arc=c:\util\rar.exe

:: Включаем отложенное расширение переменныхи выполняем основной цикл
cmd /v:on /c %0 START
GOTO :EOF

:START
:: создаем списки файлов
for %%I in (%source_dir%\*.*) do (
set filedate=%%~tI
set filedate=!filedate:~0,2!!filedate:~3,2!
echo %%I >>%temp%\arc_!filedate!.txt
)

:: архивируем
for %%I in (%temp%\arc_*.txt) do (
set arcname=%%~nI
set arcname=%dest_dir%\!arcname:~4!.rar
%arc% a !arcname! @%%I
del /Q/F %%I
)


Далее должно быть понятно.

PS. Отложенное выполнение переменных можно прописать в реестре. Тогда не нужны будут выкрутасы с запуском батника из под самого себя.

PPS. Твой батник может тебе подложить хорошую свинью в високосный год.
Автор: Elroir
Дата сообщения: 12.01.2007 03:24
evgeni666

Цитата:
Включаем отложенное расширение переменныхи выполняем основной цикл
cmd /v:on /c %0 START

А что, команду setlocal enabledelayedexpansion, уже отменили?

Цитата:
set filedate=%%~tI

Модификатор ~t, выдает дату/время модификации файла, а StanislavG просил дату создания.

Дальше - человеку надо архивировать вчерашние файлы. У тебя архивируются все файлы сгруппированные по дате.
После первого запуска, в temp директории уже будут txt файлы, которыми пользуется батник, то есть при каждом последующем запуске, туда будут добавляться записи.
Короче, батник красивый, полезный, но не до конца отлаженный и делает не то,что нужно.
Автор: esb
Дата сообщения: 12.01.2007 09:36
Подскажите, пожалуйста, как в bat-файле при работе в чистом ДОС'е из полного имени файла, т.е. <имя.расширение> получить только <имя> без расширения.
Имя файла в батник передается как параметр.
Автор: tolyn77
Дата сообщения: 12.01.2007 09:51
есть команда
"C:\>net localgroup Администраторы"

она выдает слишком много лишней информации
"Имя псевдонима Администраторы
Комментарий Администраторы имеют полные, ничем неограниченные права доступа к компьютеру или домену

Члены

-------------------------------------------------------------------------------
домен\Domain Admins
Администратор
Команда выполнена успешно."

можно сделать что бы отображались только члены этой группы?
ну тоесть
"домен\Domain Admins
Администратор"
заранее благоадерн
Автор: Elroir
Дата сообщения: 12.01.2007 11:39
tolyn77

Цитата:
можно сделать что бы отображались только члены этой группы?

Попробуй запускать так:

Код: net localgroup Администраторы | more +6 | find /v "выполнена"
Автор: tolyn77
Дата сообщения: 12.01.2007 13:39
Elroir
класно, точно нужно, но только на сколько я понял в английской это работать не будет?
Автор: Elroir
Дата сообщения: 12.01.2007 13:45
tolyn77

Цитата:
только на сколько я понял в английской это работать не будет?

Если поменять Администраторы на Administrators, а "выполнена" на "completed", то будет
Я тестировал на английской WinXP.
Автор: Petrofox
Дата сообщения: 12.01.2007 20:19
Задача такая:
На сервере имеется папка с архивными файлами, нужно скопировать файлы на локальную машину, которые созданы позже определенной даты в одну папку. Потом их разархивировать и перенести в другую.
Автор: evgeni666
Дата сообщения: 12.01.2007 20:28
Elroir

Цитата:
А что, команду setlocal enabledelayedexpansion, уже отменили?


Не знал про нее аднака потому и извращался так. Буду теперь знать.

Далее. Речь идет про логи. Т.е. StanislavG полюбому будет интересовать время последней записи в файл.


Цитата:
Дальше - человеку надо архивировать вчерашние файлы. У тебя архивируются все файлы сгруппированные по дате.


В исходном задании не было про вчерашние файлы. Было про создать архив с именем, соответствующему дате файла. Потом никто не мешает перенести их в архив или в другое место.


Цитата:
После первого запуска, в temp директории уже будут txt файлы, которыми пользуется батник, то есть при каждом последующем запуске, туда будут добавляться записи.


А батничек то чистит за собой временные файлы.
Автор: Zyava
Дата сообщения: 12.01.2007 21:51
Может такая задача уже рассматривалась, но прочитать все страницы некогда, просто проглядел - вроде бы не нашел. Задача такая: нужен бат-файл, который запускает exe файл, ждет его завершнения и снова запускает тот же exe файл.

Я написал так:

:begin
start /wait myexe.exe
goto begin

где myexe.exe - консольное приложение

при этом появляется запрос ^CЗавершить выполнение пакетного файла [Y(да)/N(нет)]?
нужно сделать так чтобы этого запроса не появлялось а просто перезапускалась программа myexe.exe. У start нет никакого ключа для этого .
Автор: Elroir
Дата сообщения: 12.01.2007 22:07
evgeni666

Цитата:
А батничек то чистит за собой временные файлы.

Извини - не заметил

Цитата:
В исходном задании не было про вчерашние файлы

Так мы же потом уточняли...

Zyava
Батник ты написал совершенно верно. У меня такое впечатление, что твоя прога в процессе работы генерирует сигнал Control-C, который батник интерпретирует как попытку остановить его.
Автор: Tipulatoid
Дата сообщения: 13.01.2007 02:55
Еще вопрос

есть файл send.ini

Цитата:
[Champ name] # Название турнира
0+Аделаида-2
[Mail name] # Имя ящика в программе The Bat!
0#Yandex.ru
[Period number] # Текущий номер периода
0~3
[Group id] # Номер или буква сетки
0*5


В батнике выполняется команда:

Цитата:
set /p per_num=Введите номер периода (от 1 до 16)...


Пользователь, допустим, вводит "4"

Как указать батнику, чтобы он записал новое значение не первую, и не последнюю, а скажем, в шестую строку send.ini? Заменив строку "0~3" на "0~4"

Спасибо
Автор: igrok_b2k
Дата сообщения: 13.01.2007 10:16
допустим имеется 2 сервера пусть они будут 127.0.0.1 и 127.0.0.2
имеется определненная программа которая должна запускаться с рабочей машины, но серверы частенько в ауте ((
как написать 2 ватника, по которым он пигнанет сервер, и если серв в ауте то он просто выкинет ошибку (типа Сервер не доступен) а если сервер пинганется, то он запустит прогу


З.Ы. там нашел про пинг и выключения компов, сам в этом плохо понимаю, так что лудше помогите пожалуста, заранее благодарен!

Добавлено:
нужна еще консультация как через батник добавить в реестр чтонить без вопросов (когда добавляешь в реестр, он спрева спрашивает действинтельно добавить да\нет, а потом пишет информация добавлена в реестр), как ето убрать в батнике???
Автор: Zyava
Дата сообщения: 13.01.2007 11:48

Цитата:
Zyava
Батник ты написал совершенно верно. У меня такое впечатление, что твоя прога в процессе работы генерирует сигнал Control-C, который батник интерпретирует как попытку остановить его.


Дело в том, что это программа может сама вылетать или кто-то будет убивать ее процесс, поэтому такое сообщение будет в каком-то из случаев, вот как бы его отключить/обойти?
Автор: Jon_Dow
Дата сообщения: 13.01.2007 17:23
Попробуй так:
Код: START /B /WAIT
Автор: Elroir
Дата сообщения: 13.01.2007 17:31
Tipulatoid

Код:
@echo off
setlocal enabledelayedexpansion

:: Reading period number
set /p per_num=Введите номер периода (от 1 до 16)...
set per_num=0~%per_num%
set line=6

del /q tmp_file 2>nul
set counter=1
for /f "tokens=*" %%a in (send.ini) do (
if !counter!==!line! (echo %per_num%>>tmp_file) else (
echo %%a>>tmp_file)
set /a counter=!counter!+1
)
del /q send.ini 2>nul
ren tmp_file send.ini
Автор: Desenix
Дата сообщения: 13.01.2007 20:16
igrok_b2k

@echo off
ping 127.0.0.1 -n 1 || goto noerr
echo ERROR 127.0.0.1
goto fend
noerr:
echo OK
fend:
Автор: Petrofox
Дата сообщения: 13.01.2007 20:36
У меня файлы архивные типа "c4102708.77F" распаковываются тотал коммандером или фаром, можно с помощью батника их распаковать ??
Автор: Elroir
Дата сообщения: 13.01.2007 21:53
Petrofox

Цитата:
У меня файлы архивные типа "c4102708.77F"...можно с помощью батника их распаковать ?

Если напишешь, что это за формат такой - наверняка можно.
Автор: Petrofox
Дата сообщения: 13.01.2007 22:41
ZIP
Автор: evgeni666
Дата сообщения: 14.01.2007 00:22
Petrofox
Ну так возьми консольный архиватор. Тот же zip или rar.
Автор: Elroir
Дата сообщения: 14.01.2007 00:49
Petrofox

Код:
@echo off
for %%I in (*.77F) do (
:: Следующую строчку нужно подстроить к своей утилите разархивации
unzip %%I -d %%~nI
)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.