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

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

Автор: wolf0425
Дата сообщения: 30.07.2009 00:40
levn
Цитата:
как вывести в лог файл время выполнения команд батником.

для начала его надо подсчитать

Код: Set /a Time#s=((0%Time:~0,1%)*600 + (%Time:~1,1%)*60 + (%Time:~3,1%)*10 + (%Time:~4,1%))*60 + (%Time:~6,1%)*10 + (%Time:~7,1%)

rem тут вписывается то, время исполнения чего надо померить

Set /a Time#E=((0%Time:~0,1%)*600 + (%Time:~1,1%)*60 + (%Time:~3,1%)*10 + (%Time:~4,1%))*60 + (%Time:~6,1%)*10 + (%Time:~7,1%) - %Time#S%
echo spoiled %Time#E% sec > logfile
Автор: TsAndr
Дата сообщения: 30.07.2009 08:20

Цитата:
king_stiven
Вот небольшой код у себя проверил, делает как надо )


Вот потестил, но все время он срабатывает на истину, т.е. снова валится в один каталог

Код:
S:\work>(
if "94001060509060509" == "94001060509060509" (move /Y S:\work\in\94001060509060509.dbf S:\work\out1 ) else (move /Y S:\work\in\94001060509060509.dbf S:\work\out2 )
pause
)
Для продолжения нажмите любую клавишу . . .

S:\work>(
if "94001080509080509" == "94001080509080509" (move /Y S:\work\in\94001080509080509.dbf S:\work\out1 ) else (move /Y S:\work\in\94001080509080509.dbf S:\work\out2 )
pause
)
Для продолжения нажмите любую клавишу . . .

S:\work>(
if "94001256" == "94001256" (move /Y S:\work\in\94001256.DBF S:\work\out1 ) else (move /Y S:\work\in\94001256.DBF S:\work\out2 )
pause
)
Автор: Abs62
Дата сообщения: 30.07.2009 08:44
TsAndr
Не надо было создание коротких имён файлов запрещать.
Автор: TsAndr
Дата сообщения: 30.07.2009 08:48
Хорошо, можно ли как то узнать длину имени файла? или уже все, делать на VB скриптах?
Автор: ashtroy
Дата сообщения: 30.07.2009 09:47
Добрый день

700 страниц к чтению к сожалению не осилил.
Подскажите пожалуйста как написать бантик, который будет смотреть файлы в директории и удалять файлы определенные файлы дата создания которых больше месяца назад от текущей даты?
Автор: king_stiven
Дата сообщения: 30.07.2009 09:55
ashtroy
В шапке
Работа с текстом, датой, и файлами »
http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=379&limit=1&m=1#1
Автор: ashtroy
Дата сообщения: 30.07.2009 10:11
Почитал попробовал ,ч естно говоря не получилось.
Я изменил
"%fgh%" created more than 14 days ago на erase
но файлы не стёрлись
Автор: king_stiven
Дата сообщения: 30.07.2009 10:20
ashtroy
Попробуй сначала без erase , если показывает правильно, значит дело в erase, если неправильно, значит выкладывай сюда скопиованное своё из батника. чтоб посмтреть ошибку.
команнду echo тоже убирать надо.
Автор: ashtroy
Дата сообщения: 30.07.2009 10:23
Я пробовал сначала все как указанно в исходном варианте, окно с сообщением о сроке в 30 дней выводится

vbs я не трогал, играю с батником

вот примерно что получилось



Добавлено:
@echo off
for %%a in (*.*) do (
set "fgh=%%a"
call :compare_crdate
)
goto :eof
:compare_crdate
cscript timediff.vbs "%fgh%"
if %errorlevel% gtr 30 echo "%fgh%" erase
Автор: king_stiven
Дата сообщения: 30.07.2009 10:39
if %errorlevel% gtr 30 erase "%fgh%"
не забудь ключи к erase , смотри справку по ней
Автор: ashtroy
Дата сообщения: 30.07.2009 10:55
@echo off
for %%a in (*.*) do (
set "fgh=%%a"
call :compare_crdate
)
goto :eof
:compare_crdate
cscript timediff.vbs "%fgh%"
if %errorlevel% gtr 30 erase /Q /F "%fgh%"

не стирает

с -q -f тоже не стирает
Автор: king_stiven
Дата сообщения: 30.07.2009 11:15
убери @echo off в конце поставь pause, запусти батник, скопируй и выкладывай сюда.
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
Автор: wolf0425
Дата сообщения: 30.07.2009 11:22
king_stiven ключи к erase там ни при чем - %errorlevel% почему-то всегда равен нулю
проверьте timediff.vbs что-ли, может при выносе на форум чего глюкнуло
Автор: king_stiven
Дата сообщения: 30.07.2009 11:27
wolf0425
у меня не равен нулю, да и у игоря_андреева, чей батник я привёл-тоже.
Автор: DeadAnarchist
Дата сообщения: 30.07.2009 13:08
подскажите пожалуйста, как с помощью bat файла вызвать диалоговое окно свойства необходимого файла???

а так же возможно ли определенному файлу без открытия свойсв - безопастность присвоить полный доступ для группы администраторы полный доступ???
Автор: Upek
Дата сообщения: 30.07.2009 13:38
Может вдруг кому пригодится, скрипт для определения даты создания файла, вне зависимости от региональных настроек.
%file1% - файл у которого надо узнать дату.
dl - переменная со временем
Вывод даты в формате: 20090729124021(YYYYMMDDHHNNSS)

Код:
echo set file = CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments.Item(0)) >df.vbs
echo s=Cstr(Year(file.DateCreated))+Cstr(Right("00" ^& Month(file.DateCreated),2))+Cstr(Right("00" ^& Day(file.DateCreated),2))+Cstr(Right("00" ^&Hour(file.DateCreated),2))+Cstr(Right("00" ^&Minute(file.DateCreated),2))+Cstr(Right("00" ^&Second(file.DateCreated),2)) >>df.vbs
for /f "delims=" %%a in ('cscript //nologo df.vbs %file1%') do set dl=%%a
Автор: Joo1z
Дата сообщения: 30.07.2009 13:48
DeadAnarchist
По второму вопросу - subinacl /file %path% /grant="DOMAIN\Domain Admins"=F
Автор: DeadAnarchist
Дата сообщения: 30.07.2009 13:54

Цитата:
subinacl

точно так называется????
у меня нет такого файла
Автор: Joo1z
Дата сообщения: 30.07.2009 15:14
Стандартная - CACLS
Автор: KapralBel
Дата сообщения: 30.07.2009 16:05

Цитата:
точно так называется????
у меня нет такого файла

Входит в состав Windows Resource Kit
http://download.microsoft.com/download/8/e/c/8ec3a7d8-05b4-440a-a71e-ca3ee25fe057/rktools.exe
Автор: TX86
Дата сообщения: 31.07.2009 12:49
Мне дали написать простенький Bat - файл:
Разработать командный файл,который будет выполнять след. задачу
в цикле с интервалом в 60 сек проверять наличие файла в каталоге с:\01\ с именем test.txt. При наличии файла отправить сообщение на ПК R02 с текстом "Есть файл" и продолжать проверку.
На вашем форуме мне помогли
@echo off
:slabel1
if exist "c:\01\test.txt" (msg * /time:59 /server:R02 /W "Есть файл!")
ping -w 1000 -n 61 127.0.0.1
goto:slabel1

Но сообщение которое выводится не на русском,а на каких то непонятных символах
Мне еще нужно использовать для поcылки сообщения Net send,а для цикла Pause,sleep (или еще что то другое)
Заранее спасибо!
Автор: scensored
Дата сообщения: 31.07.2009 14:45
Слова "Есть файл!" напишите в DOS режиме.
Откройте файл Far'oм (F4) поменяйте режим на DOS (F8) и будет нормальным русским языком отправлять.
Автор: slech
Дата сообщения: 01.08.2009 00:40
всем привет.
подскажите пожалуйста как организовать цикл в моём случае ?
есть url.txt - задача пройтись по нему и после выкачивания конкретного url над файлом лога произвести кое какие манипуляции и затем по следующему url

Цитата:

for /f "tokens=1" %%i in (url.txt) do curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %%i

то что я привёл работает и проверяет url по списку и не проходит дальше.
а как мне сделать что бы выполнялось:

Цитата:
curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %%i
command 1
command 2
command 3
curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %%i

...
спасибо.

Добавлено:
и ещё такой момент
если список url - представлен в виде
http://www.mikrotik.com/thedude.php - как из него получить http://www.mikrotik.com
т.е. начиная с 8-го символа отрезать всю концовку с того места где встречаем первый /



Добавлено:
с циклом вроде помогло вот что

Цитата:

:START
for /f "tokens=1" %%i in (url.txt) do curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %%i
GOTO :NEXT
:NEXT
command1
command2
GOTO :START


с преобразованием URL вопрос всё ещё открытый.

Добавлено:
ещё вопрос - как из вот этой строчки


Цитата:
for /f "tokens=1" %%i in (url.txt) do curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %%i


получить этот самый %%i что бы сделать так
set url=%%i


пробовал делать наоборот

Цитата:

::
set for /f "tokens=1" %%i in (url.txt) do set url=%%i & GOTO :NEXT

::
:NEXT
::
::
curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %url%

но тогда ошибка в первой строчке.

Автор: smirnvlad
Дата сообщения: 01.08.2009 06:41
slech


Цитата:
но тогда ошибка в первой строчке.

for используется без set

[more]

Код:
@echo off
setlocal enabledelayedexpansion

for /f "tokens=1" %%i in (url.txt) do set "url=%%i" & call :NEXT
::
::
goto:eof

:NEXT
set "url=%url:*://=%"
call :cut_url_after_slash
curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %url%
goto:eof

:cut_url_after_slash
set "surl=%url:/=%"
if "%surl%"=="%url%" goto:eof
set "cnt=0"
:cut_url_after_slash_cycle
set "char=!url:~%cnt%,1!"
if "%char%"=="/" set "url=!url:~0,%cnt%!" && goto:eof
set /a "cnt=%cnt%+1"
goto:cut_url_after_slash_cycle
Автор: slech
Дата сообщения: 01.08.2009 11:56
smirnvlad
спасибо за скриптик - но есть проблема - он обрезает в url http:// - а мен оно нужно.
и ещё вопросик
как можно в конце вывести

Цитата:

curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %url%
echo link=%initial_url% homepage=%url% >>list.txt

link - это то что из начального файла с URL
homepage - обрезаный url - соответсвующий homepage.

спасибо ещё раз.
Автор: TX86
Дата сообщения: 01.08.2009 12:41
smirnvlad,slech
СПАСИБО БОЛЬШОЕ!
Автор: smirnvlad
Дата сообщения: 01.08.2009 21:13
slech

[more]

Код:
@echo off
setlocal enabledelayedexpansion

for /f "tokens=1" %%i in (url.txt) do set "url=%%i" & call :NEXT
::
::
goto:eof

:NEXT
set "initial_url=%url%"
call :cut_url_after_slash
curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" --include --output log.txt %url%
echo link=%initial_url% homepage=%url% >>list.txt
goto:eof

:cut_url_after_slash
set "surl=%url:/=%"
if "%surl%"=="%url%" goto:eof
set "cnt=8"
:cut_url_after_slash_cycle
set "char=!url:~%cnt%,1!"
if "%char%"=="/" set "url=!url:~0,%cnt%!" && goto:eof
set /a "cnt=%cnt%+1"
goto:cut_url_after_slash_cycle
Автор: slech
Дата сообщения: 02.08.2009 00:54
smirnvlad
спасибо огромное, заработало всё прям как надо.
последний вопросик - как можно почистить строчку от лишних знаков ?

Цитата:
                <td><div class="page #1"></div></td>

и пробелы убрать в начале.
оставить только

Цитата:

page #1


и как сделать что бы во время цикла значение set page=page1 обнулялось что ли, т.е.
идём по циклу значение
set page=page1
проходим второй раз а в результате работы цикла у нас нету никакого значения, но в результирующий файл пойдёт
echo %page% >>list.txt
и снова попадёт значение из работы предыдущего прохода.
как обнулить %page% после echo %page% >>list.txt ?

спасибо.
Автор: slech
Дата сообщения: 02.08.2009 12:01
set я обошёл с помощью errorlevel и goto(если есть другой способ буду рад услышать).

осталось только возможнось зачистить строчку.
Автор: 01MDM
Дата сообщения: 02.08.2009 12:19
slech

Цитата:
осталось только возможнось зачистить строчку.


Код:
@echo off
setlocal

set "string= <td><div class="page #1"></div></td>"

set "string=%string:<=%"
set "string=%string:>=%"
set "string=%string:"=$%"

for /f "tokens=2 delims=$" %%i in ("%string%") do echo %%i

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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