Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Ответить
 • Просмотры: 14
Аватара пользователя
amel27

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение amel27 »

Цитата Rostlv:



а в самом cmd, если это возможно.
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов




в начале

if [%RUNNED%]==[1] goto :Eof

set RUNNED=1

..........

код батника

..........

rem в саммом конце основного блока.

set Runned=

goto :eof





RUNNED не должно использоваться в оригинальном cmd. В противном случае изменить на другое имя
Аватара пользователя
Liveofan

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Liveofan »

amel27,

Ясн. может пригодится, токо начал читать про WSH интересно )

Сейчас хочу автоматизовать процесс ввода в домен, на микрософте наткнулся на вот этот скриптик:



Код:

Код: Выделить всё

Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
strDomain = "domen"
strPassword = "123"	
strUser = "user"
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _
        strComputer & "'")
ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
    strPassword, strDomain & "\" & strUser, NULL, _
        JOIN_DOMAIN + ACCT_CREATE)

Протестил, с задаными параметрами, человек запуская его, может добавить машину в домен, но только если изначально зайдет и введет имя машины ручками, все отлично работает.

Но хотелось бы еще в скриптик добавить обработчик ошибки. Т.е. если скрипт сработал и комп в домен попал, чтобы выскочила надпись, комп успешно добавлен в домен, если же комп не смог войти в домен, то выскочило окно ошибки.



И еще вопрос, возможно ли с помощью WSH заполнять сетевые настройки, а также имя компьютера?

Это чисто скриптовый язык? Т.е. графические элементы у него есть? Например когда нужно ввести имя компьютера, то вписывать его не в тело скрипта, а чтобы выскочила панель, куда ты добавишь имя и нажмешь, ок )
Аватара пользователя
Gennie

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Gennie »

Всем доброго дня суток.

Преамбула.

Код:

Код: Выделить всё

K:\PROCEDURES\Internal>dir /b|findstr /i feed
Feedback procedure.doc

Амбула.

Код:

Код: Выделить всё

K:\PROCEDURES\Internal>dir /b|findstr /i feed|start /b/max
K:\PROCEDURES\Internal>Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
K:\PROCEDURES\Internal>Feedback procedure.doc
'Feedback' is not recognized as an internal or external command,
operable program or batch file.

Вопрос: Почему оно не берёт из потока длинное имя файла целиком, а только до первого пробела, и как сделать, чтобы всё-таки start смог заглотить полное имя файла и открыть его? Я ж не передам ему в поток кавычки специально для start... Изображение К тому же, открывать может понадобиться файлы с именами, в которых даже очень много слов.

При этом проверено: если в потоке передаётся однородное имя файла без пробелов, то start нормально его открывает.
Аватара пользователя
Petya V4sechkin

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Petya V4sechkin »

Rostlv


Цитата Rostlv:



Нужна cmd-команда, не позволяющая запустить одновременно 2 и более cmd-файлов, причём её нужно указать не в exe-файле, а в самом cmd
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов




вариант, предложенный vserd не подойдет - в каждой сессии свои переменные окружения,

вместо SET можно использовать
SETX
из ресурскита Win2K:



Код:

Код: Выделить всё

IF "%RUNNED%"=="1" EXIT
SETX RUNNED 1
:: ---
PAUSE
:: ---
SETX RUNNED 0

или через реестр - не так красиво, зато штатными средствами:



Код:

Код: Выделить всё

REG QUERY HKCU\Environment /v RUNNED
If "%ERRORLEVEL%"=="0" EXIT
REG ADD HKCU\Environment /v RUNNED /d 1 /f
:: --
PAUSE
:: --
REG DELETE HKCU\Environment /v RUNNED /f

ADD: или через временный файл:



Код:

Код: Выделить всё

IF EXIST "%~dpn0.run" EXIT
@Echo.>"%~dpn0.run"
:: --
PAUSE
:: --
DEL "%~dpn0.run"
Аватара пользователя
Gennie

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Gennie »

Liveofan


Цитата Liveofan:



есть ли отладчик приложений для WSH
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов




Script Debugger for Windows NT 4.0 and Later


официально больше не поддерживается, хотя работает (смотреть внизу "Additional Information")




Цитата Liveofan:



если ошибка в коде есть, он просто мне выбрасывает виндовскую табличку с номером строки, в которой ошибка и все (
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов




отлавливать ошибки с помощью объекта "Err", указав "On Error Resume Next", подробно и с примерами:



Doctor Scripto's Script Shop (To Err Is VBScript – Part 1)


Doctor Scripto's Script Shop (To Err Is VBScript – Part 2)
Аватара пользователя
Petya V4sechkin

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Petya V4sechkin »

Gennie, если вы запустите:



Код:

Код: Выделить всё

start /b /max Feedback procedure.doc

оно ведь не выполнится, понимаете?
Аватара пользователя
Gennie

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Gennie »

О, и правда, не подумал. Изображение Действительно не выполнится. И запихать кавычки туда тоже не получится. Значит, видимо, остаётся только через for. Благодарю!
Аватара пользователя
Gennie

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Gennie »

Цитата Rostlv:



как с помощью cmd-файла проверить наличие определённого файла в системе, вернее его версии



CMD/BAT - [решено] как узнать “версию файла”?





Цитата Rostlv:



и при не совпадении версии файла с заданной, запретить выполнение cmd



Примерно так:



Код:

Код: Выделить всё

@Echo Off
For /F "Tokens=5 Delims= " %%I In ('Filever.exe %windir%\explorer.exe') Do Set V=%%I
Echo %V%
If %V% NEQ 6.0.2900.5512 (
  Echo Версия Explorer.exe не равна 6.0.2900.5512
  Pause
  Exit
)
Аватара пользователя
Liveofan

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Liveofan »

Babullika


Цитата:



как реализовать такую схему: если internet 1 выдал ошибку а инет 2 подключился то поменять их местами , а если второй тоже выдал ошибку а третий сработал то третий на место первого , сдвинув первый на место второго а второй на место третьего
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов




хранить порядок в файле, примерно так:



Код:

Код: Выделить всё

@Echo OFF
Set CONN_LIST=%~dpn0.ini
Set TEMP_LIST=%~dpn0.tmp
If Exist "%TEMP_LIST%" Del /Q "%TEMP_LIST%"
For /F "UseBackQ Delims=" %%i In ("%CONN_LIST%") Do Call :CONNECT %%i
If Defined CONN_PARM (
   Echo %CONN_PARM%>"%CONN_LIST%"
   Type "%TEMP_LIST%">>"%CONN_LIST%"
   Echo.
   Echo Подключение произведено успешно!
) Else (
   Echo.
   Echo Произошла ошибка при работе программы
)
Exit
:CONNECT
If Defined CONN_PARM GOTO :CONNECT_SKIP
>Nul RasDial %*
If NOT ERRORLEVEL 1 Set CONN_PARM=%*
If Defined CONN_PARM GoTo :EOF
:CONNECT_SKIP
Echo %*>>"%TEMP_LIST%"
GoTo :EOF

примерное содержимое файла "Имя батника[/i]".INI:



Код:

Код: Выделить всё

"Internet 1" "Login1" "Pass1"
"Internet 2" "Login2" "Pass2"
"Internet 3" "Login3" "Pass3"
"Internet 4" "Login4" "Pass4"
"Internet 5" "Login5" "Pass5"
Аватара пользователя
Rostlv

Re: Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Сообщение Rostlv »

Цитата amel27:



вариант, предложенный vserd не подойдет - в каждой сессии свои переменные окружения,
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов




Вообще-то да Изображение(( я как-то не учел что запуск из под внешнего приложения. Для разных сесий нужно создавать и удалять файл.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»