PDA

Показать полную графическую версию : [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Freezet
11-09-2008, 14:50
Нужно через батник запустить приложение если оно не запущено. Как ето можно сделать?

нашел такую идею
SET SEARCH=notepad.exe
tasklist /fi "imagename eq %SEARCH%" /fo table /nh > %TEMP%\tmp.tmp
find /c "%SEARCH%" %TEMP%\tmp.tmp
echo %ERRORLEVEL%
if %ERRORLEVEL%==1 start notepad.exe
как-то слишком запутано? есть другие варианты? без создания темп файла

Petya V4sechkin
11-09-2008, 16:25
без создания темп файла
SET SEARCH=notepad.exe
tasklist /fi "imagename eq %SEARCH%" /fo table /nh | find /c /i "%SEARCH%"
if %ERRORLEVEL%==1 start notepad.exe

AGRESS0R
11-09-2008, 17:22
Всем прива !
Задачка вот такая:
1. проверить папку на удаленном компьютере на наличие файлов создать очет есть или нет (если возможно то как давно).
2. подцепиться к этой же машине, через РДП .
3. запустить определёную программу (софт) .
4. сделать скрин шот .
5. закрыть и сохранить отчет с картинкой в папке (фолдер).

6. (ну это вообше тяжко) послать папку на мыло или браузер.

вот та часть что мне пока удалось сделать !

@echo off
echo Check 1 - Tok Files
echo.
@dir \\shlabfls\autolims$\Common\Interfaces\Hl7\HL7Results\*.tok
echo.
echo Press Any key for Check 2 - Distrebution Engine
@pause > nul
mstsc sbxpap33a.rdp /console



@echo off

Start /w server.rdp

) Else (exit)

Благодарю за внимание !!!

Freezet
11-09-2008, 17:32
Видать всеравно какой то запрос на запуск идет. С некоторыми программами при запуске выскакивает табличка что она запущена.

Как еще можно?

Vadikan
11-09-2008, 19:02
С некоторыми программами при запуске выскакивает табличка что она запущена. »
С какими?

Freezet
11-09-2008, 20:44
если указать путь if %ERRORLEVEL%==1 start "N:\SOFT\Lan\ipscan.exe" то если процес не находит - запускается командная строка а не нужная программа/ если же указывать просто те приложения что уже лежат в system32 то срабатывает

amel27
12-09-2008, 05:45
Freezet
Как еще можно? »если всегда запускается то что ищется, то такой вариант:SET $PATH=%windir%\System32\notepad.exe

If Not Exist "%$PATH%" EXIT
For %%i In ("%$PATH%") Do Set $NAME=%%~nxi

TaskList /FI "ImageName EQ %$NAME%" /FO Table /NH | Find /I "%$NAME%"
If %ERRORLEVEL%==1 Start "" "%$PATH%"


если процес не находит - запускается командная строка а не нужная программа »Start принимает путь за заголовок окна - нужно проставить пустой заголовок (смотри пример)

amel27
12-09-2008, 13:50
AGRESS0R

1. Какая ОСь на удаленном компьютере... XP или сервер?

2. Нужно логически отделить подключение/отключение от других прикладных задач (запуск, лог, мыло, etc). Если на удаленной машине ВСЕГДА открыта консоль и она не блокируется, то можно вообще не использовать RDP, а запускать удаленно прямо из открытой консоли (через PSExec).

3. Каждая из перечисленных задач может запускаться как с локального, так и с удаленного компьютера - тут нужно определиться. ИМХО проще и надежней написать и отладить скрипт, который все перечисленное (кроме запуска консоли) выполняет локально, потом запустить (если нужно) удаленную консоль, удаленно запустить в ней выполнение скрипта, закрыть консоль. При необходимости часть операций можно выполнить локально... например, отправку почты (если удаленный компьютер не имеет выхода на почтовик).

З.Ы. Сам скрипт советую писать на AutoIT (http://forum.oszone.net/thread-98914.html), так как у него есть весь инстументарий для работы с окнами, скриншотами и почтой... на CMD ИМХО будет намного сложнее.

lAGRESSORl
12-09-2008, 15:08
1. Какая ОСь на удаленном компьютере... XP или сервер?

Ось SERVER 2003

2. Нужно логически отделить подключение/отключение от других прикладных задач (запуск, лог, мыло, etc). Если на удаленной машине ВСЕГДА открыта консоль и она не блокируется, то можно вообще не использовать RDP, а запускать удаленно прямо из открытой консоли (через PSExec).

Ок консоль можно сделать постоянной, она не блокируется !

3. Каждая из перечисленных задач может запускаться как с локального, так и с удаленного компьютера - тут нужно определиться. ИМХО проще и надежней написать и отладить скрипт, который все перечисленное (кроме запуска консоли) выполняет локально, потом запустить (если нужно) удаленную консоль, удаленно запустить в ней выполнение скрипта, закрыть консоль. При необходимости часть операций можно выполнить локально... например, отправку почты (если удаленный компьютер не имеет выхода на почтовик).

З.Ы. Сам скрипт советую писать на AutoIT, так как у него есть весь инстументарий для работы с окнами, скриншотами и почтой... на CMD ИМХО будет намного сложнее.

Ок понятно ! Дело в том что имеется некоторая программа котрую нуна проверять каждый час, заходя на удаленный комп и проверяя папку и программу на наличее ошибок ! Так вот если мне удастя вывести их в IMG то её мона будет закрепить на HTML, и будет все работать в автономном режиме. И этот скрипт может в дальнейшем во многом пригодиться !

AutoIT это установачная прога , хорошо может она и подайдёт !
amel27 насколько сложно сделат батник по выше указанным критериям !
Можно подсказать мне хотябы часть кода, я попробую дальше разобраться !

lAGRESSORl
13-09-2008, 01:04
Другой вопрос:

Подскажите пожалуйста :
Как сделать снимок экрана и чтоб сохронить его по дате и чеслу !

yurfed
13-09-2008, 01:07
сохронить его по дате и чеслу ! » В таком варианте -ни как.

lAGRESSORl
13-09-2008, 19:21
В таком варианте -ни как. »


???? ЧТо вообше не как ?? :(

lAGRESSORl
13-09-2008, 22:16
Вот может кому пригодиться !
Авто логон, (если комп под паролем то можно записать автологон и при перезагрузки заходит автоматически) при нажатии LogOff просит пароль, а также при сочетании клавишь Win+L.


'***********************************************************************************
'Autologon
'***********************************************************************************
'On Error Resume Next
strComputer = InputBox("Please Insert Name Of Computer" & vbCRLF _
& "Dot - Means This Computer ","Computer Name",".")
strUserName = InputBox("Please Insert Name Of User","User Name","ZDES_IMYA_USERa")
strPassWord = InputBox("Please Insert Password Of User","Password","SDES_PASS")
'***********************************************************************************
Const HKEY_LOCAL_MACHINE = &H80000002
'***********************************************************************************

Select Case strUserName
Case "Hryack" ExitScript
Case "" ExitScript
End Select


Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

strAutoAdminLogOn = "AutoAdminLogon"
strAutoAdminValue = "1"

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strAutoAdminLogOn,strAutoAdminValue

strDefaultDomain = "DefaultDomainName"
strDefaultDomainValue = "wshome"

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strDefaultDomain,strDefaultDomainValue

strDefaultUser = "DefaultUserName"
strDefaultUserValue = strUserName

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strDefaultUser,strDefaultUserValue

strDefaultPassword = "DefaultPassword"
strDefaultPasswordValue = strPassWord

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strDefaultPassword,strDefaultPasswordValue

Wscript.Echo "Autologon to User [" & strUserName & "] Done"

Sub ExitScript()
Wscript.Echo "Please Enter Valid User Name"
Wscript.Quit
End Sub


Сохранить в VBScript Script File

Вот отмена скрипта !

'***********************************************************************************
'Autologon
'***********************************************************************************
'On Error Resume Next
strComputer = InputBox("Please Insert Name Of Computer" & vbCRLF _
& "Dot - Means This Computer ","Computer Name",".")
strUserName = InputBox("Please Insert Name Of User","User Name","SDES IMYA")
strPassWord = InputBox("Please Insert Password Of User","Password","SDES PASS")
'***********************************************************************************
Const HKEY_LOCAL_MACHINE = &H80000002
'***********************************************************************************

Select Case strUserName
Case "Hryack" ExitScript
Case "" ExitScript
End Select


Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

strAutoAdminLogOn = "AutoAdminLogon"
strAutoAdminValue = "0"

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strAutoAdminLogOn,strAutoAdminValue

strDefaultDomain = "DefaultDomainName"
strDefaultDomainValue = "wshome"

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strDefaultDomain,strDefaultDomainValue

strDefaultUser = "DefaultUserName"
strDefaultUserValue = strUserName

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strDefaultUser,strDefaultUserValue

strDefaultPassword = "DefaultPassword"
strDefaultPasswordValue = strPassWord

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strDefaultPassword,strDefaultPasswordValue

Wscript.Echo "Autologon to User [" & strUserName & "] Done"

Sub ExitScript()
Wscript.Echo "Please Enter Valid User Name"
Wscript.Quit
End Sub

amel27
14-09-2008, 11:53
lAGRESSORl, Как сделать снимок экрана, чтобы сохранить его по дате и числу ! »
например, при помощи бесплатной утилиты CmdCapture (http://ducklink.com/free-command-line-screen-capture.php):
For /F "Tokens=1 Delims=." %%i In ('WMIC OS Get LocalDateTime') Do Set FileName=%%i.JPG
CmdCapture.exe /f "%FileName%"

Вот может кому пригодиться »эта ветка по CMD-скриптам, а не VBS!

lAGRESSORl
14-09-2008, 17:57
amel27 THX

Medic84
14-09-2008, 18:34
Я в написании батников не разбираюсь вовсе... Может кто подскажет где взять книгу, или chm файл для новичков, очень хочется научиться!!

zeroua
14-09-2008, 18:37
Medic84, шапке темы есть нужная информация, а дальше все зависит только от вас...

Medic84
15-09-2008, 18:05
Что то я ничего не понимаю.... Хочу скопировать папку(я начинаю с малого) Ввожу команду

@echo off
xcopy E:\Games\Callof~1\players E:\Backup
pause
И выводит сообщение не найден файл players
Что я делаю не так???

Petya V4sechkin
15-09-2008, 18:15
Medic84, для начала опцию /E добавьте.
А вообще: xcopy /?

Возможно, короткое имя Callof~1 не существует.

Medic84
15-09-2008, 20:32
Возможно, короткое имя Callof~1 не существует. »
НУ тогда как сделать??? Если вводить полное название, то выдает ошибку еще страннее которую мне не понять....



Все, я понял.... И правда короткого названия не было.... Сократил Имя папки... ОНО ДОЛЖНО БЫТЬ БЕЗ ПРОБЕЛОВ И СПЕЦ. ЗНАКОВ!!!




© OSzone.net 2001-2012