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

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

Автор: res2001
Дата сообщения: 07.12.2010 15:08
wolf0425

Цитата:
эта приблуда как-то совсем не то показывает, причем выполняется только локально...

Что она у тебя показывает?
Я пол сети своей просканировал - показывает то что надо, правда не серверах почему-то не показывает, но на серверах терминальные юзера.
Автор: Free_Soft
Дата сообщения: 07.12.2010 23:43
никто не сталкивался с проблемой expand?
суть в том, что на ХР при извлечении она не понимает русские буквы в пути назначения

Код: expand My.cab -f:1.exe "Моя папка"
Автор: res2001
Дата сообщения: 08.12.2010 07:46
Free_Soft

Цитата:
что на ХР при извлечении она не понимает русские буквы в пути назначения

Аналогично. Да и вообще эта тулза кривая какая-то, я использую 7z для распаковки кабов.
Автор: Zhidkoff
Дата сообщения: 08.12.2010 08:11
Доброго дня. Помогите решить задачку.

Некая программа выгружает каждую ночь файл-реплику, помещает ее в определенную папку. После чего сформированный файл требуется скопировать по сети в шару, по завершении копирования файл удалить. С одной стороны все очень легко и просто, изначально я написал простейший батник копирования, но есть одно неприятное обстоятельство, а именно - нестабильная связь, которая периодически падает, в связи с этим файл соответственно не копируется и приходится потом ручками заходить и забирать его. Решением вижу robocopy, но что-то я совсем не могу в ней разобраться, не получается применить этот метод к моей ситуации. Кому не сложно, поспособствуйте, буду очень признателен .
Автор: BVV63
Дата сообщения: 08.12.2010 10:37
Zhidkoff

Цитата:
нестабильная связь, которая периодически падает

Надолго падает? У команды "Copy" есть ключ /Z для сетевого копирования, по идее если связь обрывается, затем восстанавливается, то "Copy /Z" должно восстановить копирование. Правда, сам не проверял .
Автор: Zhidkoff
Дата сообщения: 08.12.2010 10:52
BVV63


Цитата:
Надолго падает?


Бывает по пол дня валяется
Автор: BVV63
Дата сообщения: 08.12.2010 10:58
Zhidkoff
Можно, наверное, тогда зациклить:

Код: :0
Copy /Y /Z ... || GoTo :0
Автор: Zhidkoff
Дата сообщения: 08.12.2010 11:07
BVV63

Хм, нужно попробовать, спасибо.
Автор: Accessor
Дата сообщения: 08.12.2010 12:11
Zhidkoff
может, всё-таки, целесообразнее лить по ftp-протоколу ? Есть связь - льём с докачками. Нету связи - ждём её появления.
Автор: Zhidkoff
Дата сообщения: 08.12.2010 12:24
Accessor

Как это, как это?
Автор: Joo1z
Дата сообщения: 08.12.2010 13:43
wolf0425
Psloggedon прекрасно работает и на удаленных машинах, хотя иногда очень тормозит. Для себя писал такой скрипт:


Код: @echo off
setlocal
set pc=%1
if /i "%pc%"=="" set pc=%computername%
if "%pc:~0,2%"=="\\" set pc=%pc:~2%
Ping -n 1 %pc% >Nul
If ErrorLevel 1 (
ECHO Љ®¬ЇмовҐа %pc% -Ґ ¤®бвгЇҐ- Ї® бҐвЁ.
ping -n 2 127.0.0.1 >Nul
goto :EOF
)
for /f "tokens=3,*" %%t in ('reg query "\\%pc%\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion ^2^>nul ^| findstr 6.1') do GOTO WIN7
set dpath=Software\Microsoft\Windows\CurrentVersion\Explorer
for /f "tokens=*" %%a in ('reg query \\%pc%\HKU ^2^>nul^| findstr "HKEY_USERS\S-1-5-21" ^| findstr Classes') do set rpath=%%a\%dpath%
for /f "tokens=5,*" %%l in ('reg query \\%pc%\%rpath:_Classes=% /v "Logon User Name" ^2^>nul') do (
rem echo %%l    -    %pc%>>whologon.txt
echo %%l    -    %pc%
)
GOTO :EOF
:WIN7
for /f "tokens=*" %%a in ('reg query \\%pc%\HKU ^2^>nul^| findstr "HKEY_USERS\S-1-5-21" ^| findstr Classes') do set rpath=%%a\Volatile Environment
for /f "tokens=3,*" %%l in ('reg query "\\%pc%\%rpath:_Classes=%" /v UserName ^2^>nul') do (
rem echo %%l    -    %pc%>>whologon.txt
echo %%l    -    %pc%
)
Автор: wolf0425
Дата сообщения: 08.12.2010 14:08

Цитата:
wolf0425
Psloggedon прекрасно работает и на удаленных машинах, хотя иногда очень тормозит.

на удаленных работает, разобрался, а что странно она иногда пишет - осталось.

Код: D:\soft\SysinternalsSuite>PsLoggedon.exe \\192.168.х.ххх

PsLoggedon v1.34 - See who's logged on
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

Users logged on locally:
<unknown time> xx-16\xxxx
<unknown time> xx-16\?????????????
<unknown time> xxxxx\x.xxxxxxxx
<unknown time> xxxxx\xxxxx.xxxxxxx
<unknown time> xxxxx\xxxx.xxxxxxx
<unknown time> xxxxx\xxxxx.xxxxxxxx
<unknown time> xxxxx\xxxx.xxxxxxxxxx
08.12.2010 11:33:55 xxxxx\xxxx.xxxxxxxx
<unknown time> xxxxx\x.xxxxxx

Users logged on via resource shaxxx:
08.12.2010 14:55:12 xxxxx\x.xxxxxx
Автор: Joo1z
Дата сообщения: 08.12.2010 14:33
wolf0425
А зачем ему принтер подсовывать? Конечно будет тормозить, т.к. reg query будет ждать ответа. Плюс я обычно работаю с сетевыми именами, чего принтер лишен.

Ну или чтобы скрипт не отвлекался на всякие принтеры делать проверку nslookup %ip% | findstr Name:
Автор: Accessor
Дата сообщения: 08.12.2010 15:01
Zhidkoff
Цитата:
Как это, как это?
на одной стороне ставится ftp-сервер. Лидером, я считаю, Gene6 FTP Server. А на второй стороне с помощью штатного ftp.exe этот файл скачивается пакетным файлом. Правда, не уверен умеет ли штатный ftp.exe делать докачку. Если нет, то тогда есть ещё консольные утилиты wget и ncftp. Кто-нибудь из них точно умеет докачивать.
А вообще, я бы сделал связку Gene6 с одной стороны и ReGet с другой стороны. Т.е. вообще без пакетных файлов. На отдающей машине работает Гена. А на принимающей машине Регет со своим встроенным планировщиком. Регет может быть запущен как круглосуточно, так и запускаться в опредленное время и стартовать закачку.
Автор: slech
Дата сообщения: 08.12.2010 15:47
подскажите пожалуйста, возможно ли такое:

Цитата:

set n=2
set test%n%=qwerty
echo %test%n%%

у меня далее по тексту очень много использований этого самого test2 и я хотел бы его объявить единажды, а по необходимости изменять лишь значение n.
можно ли так сделать ?
Автор: res2001
Дата сообщения: 08.12.2010 16:14
slech
так попробуй

Код: SetLocal EnableDelayedExpansion
set n=2
set test%n%=qwerty
echo !test%n%!
Автор: wolf0425
Дата сообщения: 08.12.2010 16:29

Цитата:
wolf0425
А зачем ему принтер подсовывать? Конечно будет тормозить,
он сам подсовывается, когда диапазон IP сканируешь
А как быстро отдетектить что на IP не комп, а более куцый девайс - в голову не приходит.


Цитата:
Плюс я обычно работаю с сетевыми именами, чего принтер лишен.
это ещё почему принтеры лишены имени?
зарегистрировались в DHCP/DDNS и получили, как все компы
А те которые с тупыми статическими адресами - тех явно прописываю в DNS (чтоб было видно кем занят адрес)

а один из MFU ещё и в домен просится со страшной силой
Автор: slech
Дата сообщения: 08.12.2010 16:35
res2001
спасибо, твой пример сработал, в моём случае несработало


Цитата:
SetLocal EnableDelayedExpansion
set n=47
set "mailsubject%n%=Subject: Your review was published by editor .* \."
::
findstr /M /I /X /R /C:!mailsubject%n%! /F:%list% | find /I /C "msg" >%mailcountfile%
::
set /p mailsubject%n%count=<%mailcountfile%


Добавлено:

Цитата:
findstr /M /I /X /R /C:"!mailsubject%n%!" /F:%list% | find /I /C "msg" >%mailcountfile%

всё сработало прекрасно, забыл ковычки указать.
ещё раз спасибо.
Автор: Ortios
Дата сообщения: 08.12.2010 19:07
wolf0425

Цитата:
А как быстро отдетектить что на IP не комп, а более куцый девайс

Попробуй по значению TTL команды Ping.
Автор: slech
Дата сообщения: 08.12.2010 19:19
res2001

Цитата:
SetLocal EnableDelayedExpansion
set n=2
set test%n%=qwerty!
echo !test%n%!

а как можно обойти такую заcаду ?
Автор: Ortios
Дата сообщения: 08.12.2010 19:53
slech

Цитата:
а как можно обойти такую заcаду ?

Да без проблем.

Код: set n=2
call set test%%n%%=qwerty!
call call echo %%test%n%%%
Автор: wolf0425
Дата сообщения: 08.12.2010 21:45

Цитата:
Попробуй по значению TTL команды Ping.
мысль интересная, у всех проверенных железок ТТЛ действительно отличается от 128 (замеченные варианты 64 и 255)...
Автор: res2001
Дата сообщения: 09.12.2010 09:01
Ortios

Цитата:
Да без проблем.

что-то не работает твой вариант.

slech

Цитата:
а как можно обойти такую заcаду ?

Вот так вроде получается:

Код: @echo off
set n=2
set test%n%=qwerty!
set val=test%n%
call echo %%%val%%%
Автор: slech
Дата сообщения: 09.12.2010 11:12
res2001

Цитата:
что-то не работает твой вариант.

у меня всё сработало вот так

Цитата:
set n=01
set "mailsubject%n%=Subject: your mail .* from site.com!"
call call findstr /M /I /X /R /C:"%%mailsubject%n%%%" /F:%list% | find /I /C "msg" >%mailcountfile%
set /p mailsubject%n%count=<%mailcountfile%



Цитата:
Вот так вроде получается:

Спасибо, записал.


Цитата:
ЗЫ: А как на счет обхода qwerty% или qwerty^|&><? Всего не обойдешь.

У меня в регулярных выражениях встречается пока лишь !
[ ] \ ^ $ . | ? * + ( ) { } - это вроде пока не придвидится.
Автор: xzGORzx
Дата сообщения: 09.12.2010 12:09
Здравствуйте.
Подскажите, возможно ли на бате совершать действия деления такие как эти: 3/2
При выполнении такой он в ответе выдает мне только целые, а десятые "прячет".
Как можно решить проблему?
Автор: res2001
Дата сообщения: 09.12.2010 12:23
xzGORzx
В cmd поддерживаются только целочисленные арифметические операции со всеми вытекающими.
Решить проблему можно, например тебе нужно 2 знака после запятой после деления (v=v1/v2)
set /a v=v1*100/v2
set /a vc=v/100
set /a vo=v%%100
получим в vc - целую часть в vo - дробную 2 знака после запятой.
Автор: xzGORzx
Дата сообщения: 09.12.2010 12:41
res2001,
Огромнейшее тебе спасибо!!!
Теперь наконец-то допишу прогу, для решения квадратных уравнений.
Автор: Free_Soft
Дата сообщения: 09.12.2010 13:08
проблема практического свойства: есть два батника, в обоих есть обращение к wmic. Второй батник вызывается из первого с помощью call. Все это хозяйство упаковано Bat_To_Exe_Converter.exe в режиме скрытия окна консоли. На Windows XP вся эта конструкция зависает намертво в момент обращения второго батника к wmic. На Win7/Vista все работает. Самое интересное, что если все это упаковать Bat_To_Exe_Converter.exe без скрытия консоли, все будет работать... Есть у кого соображения?
Пс. Новая версия Bat_To_Exe_Converter.exe 1.5.1 ведет себя так же
Автор: bomzzz
Дата сообщения: 09.12.2010 13:11

Цитата:
Bat_To_Exe_Converter.exe 1.5.1

не самая корректная программа
Автор: Free_Soft
Дата сообщения: 09.12.2010 13:19
bomzzz
зато единственная из мне известных на сегодняшний день, скомпилированные файлы которой не рубятся антивирусами. кстати версия 1,51 в этом плане стала только хуже. возможно из-за новой версии UPX

Добавлено:
А что можешь посоветовать? кроме изучения "нормального" языка программирования

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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