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

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

Автор: Relogin
Дата сообщения: 15.06.2006 07:14


Цитата:
Смысл в том, что список файлов сортирутся командой dir по дате, соответственно в начале списка будут самые новые файлы. Первый файл из списка пропускается, остальные удаляются


Благодарю, лекарство помогло.
Теперь разбираюсь немного
Автор: evle
Дата сообщения: 15.06.2006 07:41
GOODmen
Мда, выливаем воду из чайника...
Чтобы удалить один, не надо считать сколько оставить. Просто отсортировать в другом направлении и первый удалить. В твоём случае можно ограничиться вот таким кодом:

Код:
for /F %%a in ('dir /B /A-D /OD %1') do ( del %%a & goto end )
:end
Автор: CYBORG1980
Дата сообщения: 15.06.2006 08:15
В общем показательный пример - сам спросил - сам ответил.. вот мое решение..

set copyfile=c:\bin\LGInvoice.xlt

net use S: /delete /y
@net view|@for /F "tokens=1" %%c in ('@find "\\"') do (
net use S: %%c\c$\bin
Copy %copyfile% S:\ /y
net use S: /delete /y
)



evle:
Спасибо за твой способ
Автор: Spyk3r
Дата сообщения: 15.06.2006 09:18
Вопросик: А можно консольный FTP перевести в пассивный режим?, если можно то как?
Автор: VladimirKvach
Дата сообщения: 15.06.2006 09:33

Цитата:
Вопросик: А можно консольный FTP перевести в пассивный режим?, если можно то как?


Юзай curl (http://curl.haxx.se/download.html) Умеет и скачивать и закачивать, по умолчанию работает именно в пассивном режиме. Попробовал с его помощью закачивать на ftp провайдера через adsl, скорость получилась в 2 раза больше в сравнении с фаром.

ИМХО: для решения интернетовских задач лучше использовать утилиты портированные их юникса.
Автор: GOODmen
Дата сообщения: 15.06.2006 11:43
Спасибо evle!
Вот что у меня вышло. Задача: на первом серваке каждую ночь делается бэкап базы, второй сервак берет самый свежий бэкап, архивирует и кладет себе в папку. если места на диске меньше чем 1 гиг, сперва удаляется самый старый архив и снова пробует архивировать.
Как будто работает, с понедельника запущу в работу...


Код:
@echo off
:CHEK
set from_dir=d:\temp\
set to_dir=d:\temp\test\
set get_rar=c:\gate\back_olimp\Rar.exe
set a=
cd /d %from_dir%
freedisk /d %to_dir% 1gb
if %errorlevel%==1 (
for /F %%a in ('dir /B /A-D /OD %to_dir%olimp*.rar') do ( del %to_dir%%%a
echo not allow space-%errorlevel% = deleted %%a > %date%_NotAllowSpace_log.txt
goto :CHEK )
)
if %errorlevel%==0 (
for /f %%a in ('dir /b /A-D /o:d %from_dir%olimp*.bak') do (echo allow space-%errorlevel% = copyet %%a > %date%_succesful_log.txt
%get_rar% a -s -m5 -ep -o- %to_dir%%%~na %from_dir%%%a & goto :END)
)
:END
pause
Автор: abz
Дата сообщения: 15.06.2006 11:47
GOODmen

Цитата:
freedisk

А это что за программа? Разве нельзя средствами Windows узнать количество свободного места?
Автор: GOODmen
Дата сообщения: 15.06.2006 12:07
эта программа проверяет соответсвие свободного места на диске заданному, работает в пакетниках - и это главное!
Автор: evle
Дата сообщения: 15.06.2006 12:55
GOODmen
Хм. Я бы всё таки количество бэкапов задавал более явно, а то можно что-нибудь случайно убить.
abz

Цитата:
Разве нельзя средствами Windows узнать количество свободного места?

А разве можно? Ну, можно из последней строки команды dir. но выковыривать его оттуда не очень удобно.
Автор: GOODmen
Дата сообщения: 15.06.2006 13:08
evle
Действительно, чистит всю папку... я надеялся после первого цикла for он выйдет по метке, таким образом успеет удалить токо один файл... придется опять голову поломать
А нет, вру! он будет чистить папку по одному файлу пока условие по свобоному месту не выполнится
Автор: Vampireee
Дата сообщения: 15.06.2006 16:25
Добрый день
у меня такой вопрос..
есть батник следующего содержания

@echo off
:repeat
rasdial nameconnecta login password
if %errorlevel% gtr 0 (
echo Error. Repeat
goto repeat
) else (
echo Good.
)

Он проверяет наличие впн соединения и если его нету то соединяется до тех пор, пока оно не появится.
Так вот, нужне батник, который бы пинговал постоянно сайт (ping ya.ru -t), и в случае ответа "Превышен интервал....." пересоединял впн (рассоединение впн - rasdial /disconnect). Возможно даже что в случае не 1-го ответа а 10-го подряд.

Надеюсь я понятно изложил суть проблемы...
Автор: CYBORG1980
Дата сообщения: 15.06.2006 16:59
А смысл разъединяться. проблема уже не в впн - а у провайдера. перезапуск впн не поможет
Автор: evle
Дата сообщения: 15.06.2006 18:43
GOODmen
А если место израсходуется на что-то другое, удалятся "лишние" бэкапы. Вообще, не знать, сколько у тебя бэкапов и за какой они срок как-то неаккуратно.
Автор: Vampireee
Дата сообщения: 15.06.2006 19:23
в моём случае проблема в впн. наш впн имеет свойство почему то блокировать на серваке инет, и перезапуск впн помогает
Автор: vu1tur
Дата сообщения: 16.06.2006 13:33
Vampireee
в шапке темы есть вот такая ссылка:
Пример выполнения команд по результату команды ping
Автор: Vampireee
Дата сообщения: 16.06.2006 15:27
моя проблема в том что это всё нужно зациклить, что бы пинг шёл постояяно и по результатам вывода каждой сроки пинга выполнялось действие...
Автор: VladimirKvach
Дата сообщения: 19.06.2006 05:49
Vampireee

Батник для определения коннекта по звуку, если комп стоит в одном месте, а сами вы лазите где-нибудь на кроссе


@echo off
cls
if "%1"=="" exit

:cikl
ping -n 1 %1 > nul
if %errorlevel%==0 (echo %1 OK*) else (echo %1 Error)
goto cikl


Примечание: вместо звездочки нужно поставить символ с кодом 7 (звуковой сигнал). Поставить его можно например в фаре, нажав alt и цифру 7 справа на цифровой части клавиатуры
Автор: slech
Дата сообщения: 19.06.2006 07:51
VladimirKvach
Только я думаю полезно ещё добавить код на пропадание компа из сети, скажем 2-а сигнала.
echo 
echo 
Автор: VladimirKvach
Дата сообщения: 19.06.2006 13:10
slech


Цитата:
Только я думаю полезно ещё добавить код на пропадание компа из сети, скажем 2-а сигнала

Была такая идея, отслеживать коннект с интернетом (ибо связь иногда пропадает). Типа батник на маршрутизаторе пишет в лог результаты пинга, а на моем компе через tail этот лог анализируется и в случае пропадания связи звуковой сигнал. Но ведь всю ту же самую работу фактически делает аськин цветочек в трее, разве что не пикает. Так что надобности пока в таком батнике нет.
Автор: BredBred
Дата сообщения: 19.06.2006 19:55
http://forum.ru-board.com/topic.cgi?forum=5&topic=4582&start=560#6
Смогёшь?
Автор: GangsteR
Дата сообщения: 19.06.2006 20:10
Ребят, подскажите плиз!!!

вот есть у меня директория с мп3, в ней всё лежит так:
artist/year - alibum/track - title.mp3

так вот решил я посчитать а сколько у меня альбомов 2006 году накачано, и решилось это достаточно легко -
Код: tree|find /c "2006"
Автор: nick131313
Дата сообщения: 19.06.2006 22:28
Доброго времни суток!
Есть программа RapGet, директория установки дефолтная.
Есть ссылка на рапиде.
Нет возможности запустить ее дрпустим в 3:00, а до этого ожидать.
Спасибо!
Автор: koric
Дата сообщения: 20.06.2006 10:21
nick131313
а не проще использовать стандартный Windows-ский планировщик задач? в определённое время запустить программу с необходимыми ей ключами
Автор: Rishatx
Дата сообщения: 20.06.2006 11:07
Первый раз не правильно написал, батник, позволяющий, найти все файлы с расширением *.msg в определенном каталоге, оброботать каждую утилитой перекодирования trt.exe, переименовать файл и удалить исходный! Надеюсь на помощь! Устал биться над этой задачей...
Автор: KapralBel
Дата сообщения: 20.06.2006 11:32
Rishatx

Код: @Echo Off
PushD C:\Folder\
For %%a in (*.msg) Do Call :_Parse %%a
PopD
GoTo :EOF

:_Parse
Echo TRT %1 /Option
Del %1 /q /f
GoTo :EOF
Автор: BredBred
Дата сообщения: 20.06.2006 11:40
nick131313
Не изобретай велосипед: на сайте _http://www.dimonius.ru/
качай USDownloader и забудь о проблеммах.
koric - как проще см выше.
Автор: Milka1
Дата сообщения: 20.06.2006 13:11
Привет. В написании батников не сильна , поэтому нужна ваша помощь. Задача следующая.
Надо с фтп сервера скачать файлы на комп, но закачивать только вновь созданные на фтп-сервере базы.
Автор: VladimirKvach
Дата сообщения: 20.06.2006 13:14
Друзья, а как реализовать подобную конструкцию

for /L %%i in (5,-1,1) do (set /a n=%%i+1 & ren %%i.rar %n%.rar)

я так понимаю, что то что в скобках интерпретируется когда n еще нет и пофигу, что оно появляется. Как это обойти? как %%i увеличть на единицу? И еще, решить эту задачу хочется в одну строчку без goto

спасибо.

Добавлено:
Milka1

Цитата:
Надо с фтп сервера скачать файлы на комп, но закачивать только вновь созданные на фтп-сервере базы


Вот мой батник для скачивания обновлений Касперского

@echo off
wget -N --reject=exe,klc --directory-prefix=bases --passive-ftp ftp://ftp.kaspersky.ru/updates/*.*
wget -N --directory-prefix=bases --passive-ftp ftp://ftp.kaspersky.ru/bases/ids/*.*

Сам wget и описание к нему ищи поиском в интернете
Автор: Milka1
Дата сообщения: 20.06.2006 13:24
Цитата:
Надо с фтп сервера скачать файлы на комп, но закачивать только вновь созданные на фтп-сервере базы


Вот мой батник для скачивания обновлений Касперского

@echo off
wget -N --reject=exe,klc --directory-prefix=bases --passive-ftp ftp://ftp.kaspersky.ru/updates/*.*
wget -N --directory-prefix=bases --passive-ftp ftp://ftp.kaspersky.ru/bases/ids/*.*

Сам wget и описание к нему ищи поиском в интернете[/q]


Спасибо за ответ
Но дело в том,что реализацию надо сделать через батник, так была поставлена задача. Спасибо еще раз
Автор: uZver
Дата сообщения: 20.06.2006 15:41
Milka1
не очень понял что значит через батник .
мне так кажется что без привлечения сторонних утилит не сделать
можно вместо wget использовать стандартный ftp(может в этом то и задача ), тогда так

чтобы получить файл:
ftp -s:getftp.txt -v -d
+ сам getftp.txt
open IP_servera
login
password
get file.txt
quit

*** ну а тут определится как нить что они изменились ***

чтобы скопировать файл:
ftp -s:putftp.txt -v -d
+ сам putftp.txt
open IP_servera
login
password
put file.txt
quit

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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