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

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

Автор: AgentMario
Дата сообщения: 06.09.2009 02:19
Спасибо! И правда.. чёт я завтыкал глянуть в справку... А как насчёт второго варианта? чтоб он удалял строки. Можно по именам, а можно что просто удалял последнии 2 строки.
Автор: 01MDM
Дата сообщения: 06.09.2009 07:12
Alukardd

Цитата:
как передать пароль в runas, либо как подругому выполнить батник от имени нужного пользователя?

Никак. Runas принимает пароль только с клавиатуры. Psexec.

Цитата:
здается мне что реестр удаленно поправить не удастся по крайней мере ветки HKCU

Я же приводил пример, как можно добавить значение в HKCU любого пользователя на удаленной машине, независимо от того залогинен он или нет.
Автор: Alukardd
Дата сообщения: 06.09.2009 12:59
01MDM

Цитата:
Никак. Runas принимает пароль только с клавиатуры.

это я нашол как делается...
а с батником есть решение! вот такое:

echo пароль | runas /netonly /user:workgroup\user "shutdown /s /m \\xxx.xxx.xxx.xx"
rem переназначение стандартного вывода программы 'echo' на стандартный ввод программы 'runas'

runas /netonly /user:workgroup\user "shutdown /s /m \\xxx.xxx.xxx.xx" <текстовый_файл_с_паролем
rem переназначение стандартного ввода программы 'runas'


Цитата:
Я же приводил пример, как можно добавить значение в HKCU любого пользователя на удаленной машине, независимо от того залогинен он или нет.

если повторишься или кинешь ссылочку, то буду оч признателен, а то с runas плохой вариант т.к. начальнику придется вводить пароли подчиненных( это по крайней мере неудобно смотреть их для каждого подчиненного ).
Автор: 01MDM
Дата сообщения: 06.09.2009 13:53
Alukardd

Цитата:
echo пароль | runas /netonly /user:workgroup\user "shutdown /s /m \\xxx.xxx.xxx.xx"


Ну не знаю, такой вариант обсуждался. У меня не работает, но без /netonly.


Цитата:
если повторишься или кинешь ссылочку,

Да, что-то с залогиненным не получается... Пятница... Беру слова обратно.
С незалогиненным:

Код:
reg load hku\test "\\192.168.0.1\C$\Documents and Settings\user\ntuser.dat"
reg add hku\test\environment /v "test" /t reg_sz /d "test" /f
reg unload hku\test
Автор: Alukardd
Дата сообщения: 06.09.2009 14:51

Цитата:
Т.е подгружаешь куст реестра неактивного пользователя "user" с машины \\192.168.0.1 в свой реестр (в hku), вносишь изменения, выгружаешь.

эм.. профиль у меня сетеой
Автор: b2pip
Дата сообщения: 06.09.2009 21:51
fd1136

Цитата:
Т.е. просто файл будет перезаписан своей точной копией тебя устроит?

Конечно нет, увы
В этом то и суть - при копировании одинаковые пропускать, недостающие копировать, новые заменять старыми.

Я не нашел такого решения через batники. Плохо искал? Подскажите плиз.
Автор: 01MDM
Дата сообщения: 07.09.2009 00:22
Alukardd

Цитата:
эм.. профиль у меня сетеой

Чем богаты.. Я уже упоминал про другую галактику.
Автор: wolf0425
Дата сообщения: 07.09.2009 00:57
b2pip
Цитата:
Я не нашел такого решения через batники. Плохо искал? Подскажите плиз.

http://en.wikipedia.org/wiki/Robocopy
не спасет?
там еще можно влепить и ключик чтоб потерлись лишние файлы, т.е. утилита как раз для бэкапов/откатов.
Автор: fd1136
Дата сообщения: 07.09.2009 10:17
b2pip

Цитата:
недостающие копировать

Это понятно

Цитата:
новые заменять старыми

Тоже понятно - откат.

Цитата:
при копировании одинаковые пропускать

Почему? А если перезаписывать, что произойдет?
Раз уж
Цитата:
новые заменять старыми
, то и одинаковые можно перезаписать.... Нет?
Автор: wolf0425
Дата сообщения: 07.09.2009 10:42
fd1136

Цитата:

Цитата: при копировании одинаковые пропускать
Почему? А если перезаписывать, что произойдет?
Автор: fd1136
Дата сообщения: 07.09.2009 11:17
wolf0425

Цитата:
копирование будет занимать в разы больше времени и сетевого трафика.

Неизвестно. По тому ТЗ, которое озвучено, существуют три типа файлов, из них два, нуждающиеся в замене (новые, отсутствующие). И непонятно распределение по объему между ними - "таких же" может быть существенно меньше, чем "новых" или "отсутствующих".
Автор: tolyn77
Дата сообщения: 07.09.2009 14:16
01MDM

Цитата:
set "test=test.bat"

это понятно, но я то хотел для автоматизации что бы переменная сама назначалась, мне это нужно для того что бы логи именовались созданные скриптом по его имени
Автор: b2pip
Дата сообщения: 07.09.2009 14:45

Цитата:
копирование будет занимать в разы больше времени и сетевого трафика

В моем случае именно так..


Цитата:
Robocopy

Шикарная мелочь! По дефолту делает то, чего от xcopy никаким параметром не выбьешь.
И /mir как бонус
wolf0425, благодарю!
Автор: 01MDM
Дата сообщения: 07.09.2009 16:24
tolyn77

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


Я так догадываюсь, что батник создает лог действий (тоже вопрос) со своим названием. Тогда такой вариант:

Код:
1> "%~n0.log" (
блок кода батника
)
Автор: mugil_cephalus
Дата сообщения: 07.09.2009 16:25
не поможете, а то не работает:
for /f "eol=#" %%A in (G:\scripts\tskklLstlist15.txt) do ((taskkill /F /IM %%A & echo ErrorLevelVar=%ErrorLevel%) | sort)

вот output:
Ошибка: Не удается найти процесс "UrlLstCk.exe".
ErrorLevelVar=0
Ошибка: Не удается найти процесс "realplay.exe".
ErrorLevelVar=0
Ошибка: Не удается найти процесс "qttask.exe".
ErrorLevelVar=0
Ошибка: Не удается найти процесс "GhostStartTrayApp.exe".
ErrorLevelVar=0

G:\scripts>

sort не работает
Автор: mugil_cephalus
Дата сообщения: 07.09.2009 16:48
до sort'a все работало...
нужен отсортированный вывод типа:
Ошибка: Не удается найти процесс "AppleMobileDeviceService.exe".
Ошибка: Не удается найти процесс "HKML_SRV.exe".
Ошибка: Не удается найти процесс "msmsgs.exe".
Ошибка: Не удается найти процесс "msnmsgr.exe".
Ошибка: Не удается найти процесс "NeroCheck.exe".
Ошибка: Не удается найти процесс "NMBgMonitor.exe".
Ошибка: Не удается найти процесс "realplay.exe".
Ошибка: Не удается найти процесс "REMreader_sl.exe".
Ошибка: Не удается найти процесс "SeaPort.exe".
Ошибка: Не удается найти процесс "UrlLstCk.exe".
Ошибка: Не удается найти процесс "WLIDSVC.EXE".
Ошибка: Не удается найти процесс "WLIDSVCM.EXE".
Ошибка: Не удается найти процесс "wltuser.exe".
Успешно: Процесс "GhostStartService.exe", с идентификатором 1676, был завершен.
Успешно: Процесс "GhostStartTrayApp.exe", с идентификатором 2248, был завершен.
Успешно: Процесс "GrooveMonitor.exe", с идентификатором 2128, был завершен.
Успешно: Процесс "mDNSResponder.exe", с идентификатором 1368, был завершен.
Успешно: Процесс "QTTask.exe", с идентификатором 1672, был завершен.
Успешно: Процесс "realsched.exe", с идентификатором 2080, был завершен.

G:\scripts>

и %ErrorLevel% не то показывает... , а нужно:

Ошибка: Не удается найти процесс "qttask.exe".
ErrorLevel=128

P.S.
пытаюсь получить результат:
Ошибка: Не удается найти процесс "HKML_SRV.exe".ErrorLevelVar=128
Ошибка: Не удается найти процесс "qttask.exe".ErrorLevelVar=128
и т.д. в отсортированнном виде на экране консоли cmd
Автор: wolf0425
Дата сообщения: 08.09.2009 02:42

Цитата:
пытаюсь получить результат:
Ошибка: Не удается найти процесс "HKML_SRV.exe".ErrorLevelVar=128
Ошибка: Не удается найти процесс "qttask.exe".ErrorLevelVar=128
и т.д. в отсортированнном виде на экране консоли cmd
Только чего-то типа такого

Код: for /f "eol=#" %%A in (tskklLstlist15.txt) do call :kill %%A
goto :eof

:kill
Taskkill /F /Im %1 1>%temp%\kill.log 2>&1
set /p=Err %ERRORLEVEL%    <nul
type %temp%\kill.log
goto :eof
Автор: tolyn77
Дата сообщения: 08.09.2009 09:52
01MDM
то что нужно, спасибо
Автор: mugil_cephalus
Дата сообщения: 08.09.2009 15:51
wolf0425

Цитата:
Код: for /f "eol=#" %%A in (tskklLstlist15.txt) do call :kill %%A
goto :eof

:kill
Taskkill /F /Im %1 1>%temp%\kill.log 2>&1
set /p=Err %ERRORLEVEL% <nul
type %temp%\kill.log
goto :eof


спасибо.
я ночью тоже о таком варианте - с call'om - думал, а до этого тоже вывод перенаправлял в log, а затем брал ввод оттуда и сортировал...
а нельзя все это реализовать без лишних файлов ?????
может что-то вроде:
sort | (for /f "eol=#" %%A in (G:\scripts\tskklLstlist15.txt) do (set Var1= | taskkill /F /IM %%A & echo %Var1% %ErrorLevel% 2>&1)

Добавлено:
wolf0425

Цитата:
set /p=Err %ERRORLEVEL% <nul

я с set /p не работал, но кажется здесь синтаксическая ошибка
может (?):
set /p Err=%ERRORLEVEL% > nul
Автор: wolf0425
Дата сообщения: 08.09.2009 16:42

Цитата:
кажется здесь синтаксическая ошибка
нет там ошибки, это известный финт для печати текста
(в данном случае "Err %ERRORLEVEL% ") без перевода строки.

в результате происходит склейка и печатается такой лог:
Err 128 ERROR: The process "mfdngldfjkg.exe" not found.
Err 0 SUCCESS: The process "ping.exe" with PID 1360 has been terminated.

можно наверно строку из временного лога прогнать через eще один for и через это поменять порядок печати %ERRORLEVEL% и текста об ошибке, чтоб было как в твоей хотелке - но imho незачем

что ты хочешь отсортировать своим сортом? чтоб сначала шли все ошибки потом все успешные?
пиши файл и сортируй, благо сейчас 1 строка на программу.
Или впиши | sort & pause в ярлык батника
Или рекурсивно вызывай батник с перенаправлением всего вывода на сортировщик:
Код: в начало файла
@echo off
if not "%1"=="sort" (call "%~f0" sort |sort & goto :eof)
Автор: mugil_cephalus
Дата сообщения: 08.09.2009 18:00
wolf0425
работает, но не так, как надо.
вот вывод:

Err 128 Ошибка: Не удается найти процесс "UrlLstCk.exe".
Err 128 Ошибка: Не удается найти процесс "realplay.exe".
Err 128 Ошибка: Не удается найти процесс "qttask.exe".
Err 128 Ошибка: Не удается найти процесс "GhostStartTrayApp.exe".

G:\scripts>

скрипт сортирует по №-ру ошибки, поэтому я и хочу %ERRORLEVEL% вывести в конец каждой строки, чтоб было как:

Ошибка: Не удается найти процесс "AppleMobileDeviceService.exe".
Ошибка: Не удается найти процесс "HKML_SRV.exe".
Ошибка: Не удается найти процесс "msmsgs.exe".
Ошибка: Не удается найти процесс "msnmsgr.exe".
Ошибка: Не удается найти процесс "NeroCheck.exe".
Ошибка: Не удается найти процесс "NMBgMonitor.exe".
Ошибка: Не удается найти процесс "realplay.exe".
Ошибка: Не удается найти процесс "REMreader_sl.exe".
Ошибка: Не удается найти процесс "SeaPort.exe".
Ошибка: Не удается найти процесс "UrlLstCk.exe".
Ошибка: Не удается найти процесс "WLIDSVC.EXE".
Ошибка: Не удается найти процесс "WLIDSVCM.EXE".
Ошибка: Не удается найти процесс "wltuser.exe".
Успешно: Процесс "GhostStartService.exe", с идентификатором 1676, был завершен.
Успешно: Процесс "GhostStartTrayApp.exe", с идентификатором 2248, был завершен.
Успешно: Процесс "GrooveMonitor.exe", с идентификатором 2128, был завершен.
Успешно: Процесс "mDNSResponder.exe", с идентификатором 1368, был завершен.
Успешно: Процесс "QTTask.exe", с идентификатором 1672, был завершен.
Успешно: Процесс "realsched.exe", с идентификатором 2080, был завершен.

И ПЛЮС! в конце каждой строки %ERRORLEVEL%

тоесть сначала сортировка ошибка/успешно, а далее сортировка image'ov процессов по алфавиту

НО всеравно спасибо
Автор: wolf0425
Дата сообщения: 08.09.2009 18:37

Цитата:
хочу %ERRORLEVEL% вывести в конец каждой строки, чтоб было как:
Вот в этом примере "как" - строк хватило бы и поменьше, а сами строки должны текстом соответствовать "хочу"
(а не припиской после них)

Цитата:
тоесть сначала сортировка ошибка/успешно, а далее сортировка image'ov процессов по алфавиту
ну сейчас имеем перечень успешно терминированных процессов в начале лога и по алфавиту - у них ошибка у всех 0.
А те что не удалось загасить - секциями по типам ошибок (они в основном 128) и каждая секция опять сортирована по имени процесса.
По-моему так лог куда читабельнее твоей хотелки

но если тебе точно хочется переставить код в хвост и ошибки сортировать только по имени процесса, то это делается так:
Код: :kill
Taskkill /F /Im %1 1>%temp%\kill.log 2>&1
for /f "delims=" %%l in (%temp%\kill.log) do if %ERRORLEVEL% equ 0 (echo %%l) else (echo %%l code=%ERRORLEVEL%)
goto :eof
Автор: Alukardd
Дата сообщения: 08.09.2009 18:55
я конечно щас не по теме напишу, но если кто знает что-нить про freeproxy то ответте плз на мой вопрос, просто мне кажется тот кусок форума мертв(
http://forum.ru-board.com/topic.cgi?forum=5&topic=14737&start=20
Автор: Qwait
Дата сообщения: 09.09.2009 07:46
Здравствуйте, Уважаемые! Уже прибегал к помощи данной ветки по части батников - прошу помочь ещё раз... Читал отдельные части фака, но вместе всё соеденить чтобы заработало так и не удалось. Мне необходимо проверять наличие сегодняшних бакапов по разным серверам. Сегодняшний бакап есть (первый, например, из приложенного списка необходимый к проверке) - в новосозданный файл (может можно создавать файл с именем, содержащим текущую дату?) вносится его имя и дата создания (а размер можно так же? ), следующая строчка - следующий по списку бакап. Заранее спасибо!
Автор: ipmanyak
Дата сообщения: 09.09.2009 07:54
Qwait А поглядеть шапку топика и жмакнуть Работа с текстом, датой, и файлами » [?] не судьба?
Автор: Qwait
Дата сообщения: 09.09.2009 08:03
Жмакал... Но там не написано, как и что там работает - есть задача, есть ответ - пояснений по командам нет.
Автор: mugil_cephalus
Дата сообщения: 09.09.2009 12:03
wolf0425

Цитата:
Вот в этом примере "как" - строк хватило бы и поменьше, а сами строки должны текстом соответствовать "хочу"
(а не припиской после них)

sorry вы, наверное, лишний код написали (без иронии)
и спасибо

Добавлено:
wolf0425

Цитата:
Код::kill
Taskkill /F /Im %1 1>%temp%\kill.log 2>&1
for /f "delims=" %%l in (%temp%\kill.log) do if %ERRORLEVEL% equ 0 (echo %%l) else (echo %%l code=%ERRORLEVEL%)
goto :eof


вот вывод его:
Err 128 Ошибка: Не удается найти процесс "UrlLstCk.exe".
Err 128 Ошибка: Не удается найти процесс "realplay.exe".
Err 128 Ошибка: Не удается найти процесс "qttask.exe".
Err 128 Ошибка: Не удается найти процесс "GhostStartTrayApp.exe".

G:\scripts>

в общем почти, да не совсем, у меня таких процессов для kill'a штук 30, поэтому, если не трудно, нужно вот так:

Ошибка: Не удается найти процесс "AppleMobileDeviceService.exe". Err=128
Ошибка: Не удается найти процесс "wltuser.exe". Err=128
Успешно: Процесс "GhostStartService.exe", с идентификатором 1676, был завершен. Err=0
Успешно: Процесс "realsched.exe", с идентификатором 2080, был завершен. Err=0

объясняю: первая сортировка - ошибка/успешно, в общем, по-алфавиту первой буквы "о"-ошибка и "у"-успех, вторая, внутренняя (внутри ошибок и успехов), сортировка (как и первая, тоже - в афавитном порядке) по первой букве image'a процессов - (A)AppleMobileDeviceService.exe/(w)wltuser.exe; (G)GhostStartService.exe/(r)realsched.exe

Автор: wolf0425
Дата сообщения: 09.09.2009 16:46

Цитата:
вот вывод его:
Err 128 Ошибка: Не удается найти процесс "UrlLstCk.exe".
Внимательнее будь, и проверяй перед тем как писать.
это - вывод не процитированного перед ним куска кода, а предыдущей версии :kill
от 03:43 08-09-2009 - того где ты про set /p= спрашивал.

А процитированный вариант у тебя должен выводить

Ошибка: Не удается найти процесс "UrlLstCk.exe". сode=128
Успешно: Процесс "realsched.exe", с идентификатором 2080, был завершен.


Цитата:
объясняю: первая сортировка
да я вполне в курсе как sort работает и что должно получаться
Даже как-то догадался, что тебе нравится не общая сортировка по алфавиту (кстати непонятно зачем тебе так) а деление по 2 группам - с ошибками (пофиг какими) и без.

я тут подумал, что если будут разные коды ошибок - тебе все равно их разделят на кучки - только не по коду ошибки, а по тексту сообщения

чего там в итоге набралось:
Код: @echo off
if not "%1"=="sort" (call "%~f0" sort |sort & goto :eof)

for /f "eol=#" %%A in (%~dp0tskklLstlist15.txt) do call :kill %%A
goto :eof

:kill
Taskkill /F /Im %1 1>%temp%\kill.log 2>&1
for /f "delims=" %%l in (%temp%\kill.log) do if %ERRORLEVEL% equ 0 (echo %%l) else (echo %%l code=%ERRORLEVEL%)
goto :eof
Автор: Psih
Дата сообщения: 09.09.2009 21:32
Приветствую, товарищи батнописцы.
Третий день топчусь на одном месте и не могу понять где допустил ошибку. Надеюсь на Вашу помощь!
Задача - в папке есть файлы с расширением "*.1" следующего содержания:

Код:
Строка 1
Строка 2
Строка 3
Автор: 01MDM
Дата сообщения: 09.09.2009 22:14
Psih

Код:
@echo off
for /f "tokens=*" %%i in ('type "folder\*.1"') do 0>nul 1>>1.full set /p=%%i

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

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


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