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

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

Автор: Elroir
Дата сообщения: 08.08.2007 12:32
oie71

Цитата:
И в логофе юзера тоже?

Да - только что проверил.
Ты проверял запуск не по расписанию (руками)?
Автор: oie71
Дата сообщения: 08.08.2007 13:06
только по расписанию - иначе как в логофе это сделать.
Автор: Elroir
Дата сообщения: 08.08.2007 13:21
oie71
Вопрос в том, работает ли у тебя батник в принципе?
Как ты определяешь задание?
Автор: oie71
Дата сообщения: 08.08.2007 13:23
психанул и перезагрузил физический сервер....
заработало
Автор: timex
Дата сообщения: 08.08.2007 15:33
Maza Faka,

Цитата:
Нет, задача не сложная, просто под рукой нет компа с Windows 98, что бы проверить код, да и не знаю я, честно говоря, какие команды там будут работать, а какие нет


Ну а на XP как хотя бы? А на 98-ю сам как-нить переконверчу!

P.S. по поводу AutoIt - вобщем то подойдёт, подробнее ответил в личку. Но всё-таки хотелось бы стандартными средствами винды (XP хотя бы)...

Автор: marrow1
Дата сообщения: 08.08.2007 16:38
Maza Faka

спасибо большое, теперь уже могу сделать всё так как мне нужно.
Автор: Elroir
Дата сообщения: 08.08.2007 18:26
timex
Для Win98:

Код:
@echo off
set source=c:\work
set backup=e:\backup\work
cd %backup%
for %%a in (*.*) do if not exist %source%\%%a del %%a
set source=
set backup=
Автор: qrock
Дата сообщения: 09.08.2007 08:48
Подскажите пожалуйста как мне удалить файлы в определенной папке, которые последний раз модифицировались, например, неделю назад.
Автор: Elroir
Дата сообщения: 09.08.2007 09:07
qrock
Нужно удалить файлы, которые модифицировались ровно неделю назад или имеются в виду файлы, которые модифицировались неделю назад или раньше?
Автор: qrock
Дата сообщения: 09.08.2007 09:25
Elroir
Я имел в виду, файлы которые модифицировались неделю назад и раньше.
Автор: gnome
Дата сообщения: 09.08.2007 09:29
данный батник оставляет в указанной директории определённое кол-во файлов, а остальные удаляет. Как сделать так чтобы он работал только с файлами rar , а остальные не трогал


--------------

@ECHO OFF

echo %date% %time% RM_DIR %* Called...>> "backup.log"

IF #%2#==## goto syntax
setlocal

:: Get parameter info
set path_to_scan=%1
set path_to_scan="%path_to_scan:"=%"
set count=%2
set j=0

:: Set dir command to use
set dirflag=/o:-d /b /t:c /a:-d
pushd %path_to_scan%
FOR /F "tokens=*" %%i in ('dir %dirflag% %path_to_scan%') do call :checkfile "%%i"

popd
endlocal
goto :EOF

:checkfile
set target=%1
if %j% GEQ %count% del /q %target%
::echo %date% %time% %j% from %count% %target%>> "C:\UIT\Log\backup_dok_doc.log"
set /a j=j+1
:: echo %j%
goto :EOF

:syntax
ECHO оставляет ^<number of files^> "новых" ФАЙЛОВ в
ECHO директории ^<path_to_scan^>, остальные ФАЙЛЫ удаляет.
ECHO.
ECHO Syntax: %~nx0 ^<path_to_scan^> ^<number of files^>
ECHO.
ECHO Example: %~nx0 F:\users 5
ECHO.
goto :EOF
Автор: vserd
Дата сообщения: 09.08.2007 09:43

Цитата:
set dirflag=/o:-d /b /t:c /a:-d

set dirflag= *.rar /o:-d /b /t:c /a:-d
Автор: Maza Faka
Дата сообщения: 09.08.2007 10:00
qrock
Просмотри в версии для печати forfiles, было несколько примеров.
Автор: qrock
Дата сообщения: 09.08.2007 10:32
Maza Faka

Цитата:
Просмотри в версии для печати forfiles, было несколько примеров.


спасибо, нашел такй код:

Код: forfiles -pc:\temp -m*.* -d-14 -s -c"cmd /c del /q /f @FILE"
Автор: Elroir
Дата сообщения: 09.08.2007 10:36
qrock
Как и сказал Maza Faka, надо воспользоваться утилитой forfiles:

Код: forfiles /P c:\temp /D -7 /C "cmd /c del @path"
Автор: qrock
Дата сообщения: 09.08.2007 10:43
Elroir

Цитата:
Пока писал сообщение, ты напсал свое


А по-моему вопросу с сетевыми путями у вас нет решения?
Автор: Elroir
Дата сообщения: 09.08.2007 11:13
qrock
Можно воспользоваться утилитой RoboCopy из Windows Resource Kit. Я не помню точно синтаксис этой утилиты, но она позволяет выбирать файлы модифицированные сколько-то дней назад и копировать/перемещать их. Так что надо создать новую директорию, переместить туда нужные(ненужные) файлы и удалить директорию. RoboCopy умеет работать с сетевыми путями.
Автор: qrock
Дата сообщения: 09.08.2007 11:18
Elroir
Спасибо, сейчас посмотрю robocopy.

Методом проб нашел еще один способ решения проблемы, не совсем элегантно, зато работает: воспрользоваться net use для подключения сетевого диска, с которым forfiles работает на ура. У меня получилось примерно так:
Код:
net use v: \\server\share /y
forfiles -pv:\ -m*.* -d-7 -s -c"cmd /c del /q /f @FILE"
net use v: /delete /y
Автор: timex
Дата сообщения: 09.08.2007 11:40
Elroir, пасиб, работает. Только не обрабатывает подкаталоги.

А возможно ли доработать батник, чтобы он лежал на диске исходного каталога (чтобы соединить батник-копировщик и этот батник)?
Автор: Elroir
Дата сообщения: 09.08.2007 11:57
timex
Странно - я проверял на Win98 SE - батник работал без проблем.
Концевые пробелы в скопированном коде удалил?

Добавлено:
А... Ты же не туда положил батник.
В строчке "set source=c:\test" указывается директория с оригинальными файлами, а в строчке "set backup=d:\test" указывается директория бекапа. Батник должен лежать на том же диске, что и бекап.
Автор: oie71
Дата сообщения: 09.08.2007 16:13
Я тут писал о том, что не до конца отрабатывает батник
http://forum.ru-board.com/postings.cgi?action=edit&forum=62&topic=10650&postno=1425

нашёл место "вывала" :
когда запускается ftp или wget из батника через 30сек батник вылетает.
при этом фтп НОРМАЛЬНО докачивает файл!

это всё при логофе юзера от чьего имени работает шедулер (пробовал System - та же песня)

пробовал ftp вызывать через call ftp.cmd - вылетает call.cmd и управление в основной батник не возвращается. При этом фтп НОРМАЛЬНО докачивает файл!

Чем отличается среда запуска "логофф" и "логон" юзера, владельца задания?
смотрел переменные SET - в "логофф" и "логон" одинаково во время выполнения задания.
Автор: JohnRD
Дата сообщения: 09.08.2007 16:49
KapralBel
спасибо большое за предыдушую помощь все отлично работает

подскажите пожалуйста кто знает:
прочитал в шапке Администрирование, автоматизация и сеть »· Запуск bat файлов как сервис, с помощью этих прграм..
C:\Program Files\Resource Kit\Instsrv.exe C:\Program Files\Resource Kit\Srvany.exe

весь смысл сводиться в следующем

instsrv.exe %service% srvany.exe
reg add HKLM\SYSTEM\CurrentControlSet\Services\%service%\Parameters /v Application /t REG_SZ /d %service%.cmd /f
net start %service%

и вот вопрос: если запускать cmd с одной строкой то все запускается и работает. типа

Код:
GhostSrv.exe d:\new\test.gho restore -N1 -R
Автор: KapralBel
Дата сообщения: 09.08.2007 16:59
JohnRD
А батничек сам без службы - отрабатывает?
Автор: JohnRD
Дата сообщения: 09.08.2007 17:07
KapralBel

еще бы работает конечно
я добавил выше
Автор: KapralBel
Дата сообщения: 09.08.2007 17:10
JohnRD
1. Закоментируй строку
GhostSrv.exe e:\backup\%NewFile% backup -D -C
Работает?

2. Запускай от имени админа
Автор: JohnRD
Дата сообщения: 09.08.2007 17:23
KapralBel

закоментировал жрет столько же 25% но проверить не могу поскольку заремарил как раз то что должно работать

запустил от имени админа тоже самое

в той статье есть следующее

Аннотация
В состав набора Windows NT Resource Kit входят две служебные программы, позволяющие создавать определяемую пользователем службу Windows NT для приложений Windows NT и некоторых 16-разрядных приложений (но не для пакетных файлов).

Автор: KapralBel
Дата сообщения: 09.08.2007 17:26
JohnRD
В исходном варианте программа запускается (по дсп.задач)?

Вставляй вывод в файл, для проверки на каком этапе порется

Добавлено:
А что именно жрет память - cmd.exe?
Автор: JohnRD
Дата сообщения: 10.08.2007 07:01
KapralBel

как выяснилось первый батник(с одной строкой) тоже не запускается как сервис,
работает только если в чистом виде вписать саму комманду
reg add HKLM\SYSTEM\CurrentControlSet\Services\%service%\Parameters /v Application /t REG_SZ /d "GhostSrv.exe d:\new\test.gho restore -N1 -R" /f
тогда в диспетчере задач появляется GhostSrv.exe так же как запустить сам батник.

во втором случает висит только cmd.exe и жрет 25% и GhostSrv.exe вобще нет
ну и еще висят Srvany.exe

как еще можно попытаться запустить cmd как сервс
Автор: KapralBel
Дата сообщения: 10.08.2007 07:05
JohnRD
А смысл именно в данном случае как сервис
Шедулером - раз в сутки
Все равно - зациклен до ручного прерывания или перезагрузки
Автор: dardreams
Дата сообщения: 10.08.2007 07:05
Привет великим знатокам !!!
Подскажите как сделать чтобы консоль читала русские буквы
пример...

Код:
echo off
chcp 1251>nul
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (temp.txt) do (
set "count=0"
set "text=%%a"
call :show)

goto :EOF

:show
if "!text:~%count%,1!"=="" (Echo. &set /a x=%x%+1&goto :EOF)

hs_echo "!text:~%count%,1!"

set /a "count+=1"

goto show

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Автозагрузка терминальной сессии


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