Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Перенос содержимого BAT в VBS (http://forum.oszone.net/showthread.php?t=254841)

kolumb 8034 24-02-2013 21:57 2098163

Перенос содержимого BAT в VBS
 
Как прописать в VBS этот код BAT ???

Код:

@echo off
:start
ping 127.0.0.1 -n 15 >nul
if %errorlevel%==0 (goto send) else (goto end)

:end
goto :start

:send

run.vbs

exit


cameron 24-02-2013 22:41 2098204

Код:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c c:\your_batch.cmd", 0, false


kolumb 8034 24-02-2013 22:50 2098216

Немного не поняли меня не подключить BAT а полностью перенести код в VBS что бы был вообще только один файл VBS без BAT

Iska 24-02-2013 23:29 2098241

kolumb 8034, не могли бы Вы объяснить глубинный смысл пятнадцатикратного пингования localhost'а, с последующей попыткой проверки кода ошибки?

kolumb 8034 24-02-2013 23:47 2098257

Iska,
Я на примере написал localhost после там будет другой адрес !

Iska 25-02-2013 00:11 2098265

Потрясающе. kolumb 8034, не надо писать в примерах, то, что выворачивает логику наизнанку.

Вы не ответили на вопрос. Объясните словами, что Вы хотите получить. Подозреваю, что нечто такое:
Код:

Option Explicit

If IsConnected("www.google.com") Then
        ' Place your code here…
End If

WScript.Quit 0
'=============================================================================

'=============================================================================
Function IsConnected(strAddress)
        Dim objSWbemObjectEx
       
        IsConnected = False
       
        For Each objSWbemObjectEx In GetObject( _
                "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery( _
                "SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "'")
               
                With objSWbemObjectEx
                        If Not IsNull(.StatusCode) And .StatusCode = 0 Then
                                IsConnected = True
                        End If
                End With
               
                Exit For
        Next
       
        Set objSWbemObjectEx = Nothing
End Function
'=============================================================================


kolumb 8034 25-02-2013 00:24 2098272

Может я немного не так написал ! Смыл такой : Есть к примеру два файла run.vbs и start.vbs start прописую в автозагрузку с указанным выше кодом при загрузке компьютера загружается start и если есть пинг к указанному адресу N количество раз подгружается run! Как то так !!!

Iska 25-02-2013 00:56 2098290

kolumb 8034, Вы не могли бы изъясняться по-русски? Очень обяжете.

Зачем «N количество раз»? Почему недостаточно одного раза? Что в «run.vbs»?

XaHAleX 30-10-2013 15:34 2243868

Вложений: 1
Iska, практически аналогичная проблема: в VBS только пытаюсь что-то натворить, поэтому хочу понять синтаксис и логику.
есть 5 батников:
1. clr.bat:
читать дальше »
if exist "%AllUsersProfile%\1C" forclr_W7.bat
else
forclr_XP.bat
, который проверяет наличие папки и в зависимости от результата запускает один из двух батников:
2. forclr_XP.bat:
читать дальше »
for /f "usebackq delims==" %%i in (`"dir "%systemdrive%\Documents and Settings" /ad /b"`) do call clrXP.bat "%%i"
или
3. forclr_W7.bat:
читать дальше »
for /f "usebackq delims==" %%i in (`"dir "%systemdrive%\Users" /ad /b"`) do call clrW7.bat "%%i"
, в которых получаются каталоги пользователей ПК и передаются в соответсвующие батники:
4. clrXP.bat:
читать дальше »
IF EXIST "%systemdrive%\Documents and Settings"\%1"\Application Data\Microsoft\Internet Explorer\Quick Launch" goto clear
echo Skipped: %1
goto exit
:clear

md "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP\"
md "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP\ExtCompT\"
md "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP\"
md "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP\Logs\"
md "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP\Conf\"

copy "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82\*.*" "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP"
copy "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82\ExtCompT\*.*" "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP\ExtCompT"
move "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82\tmplts" "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP\tmplts"
copy "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82\*.*" "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP"
copy "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82\Logs\*.*" "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP\Logs"
copy "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82\Conf\*.*" "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP\Conf"

rmdir /s /q "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82"
rmdir /s /q "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82"

md "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82"
md "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82\ExtCompT"
md "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82"
md "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82\Logs"
md "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82\Conf"

copy "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP\*.*" "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82\"
copy "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP\ExtCompT\*.*" "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82\ExtCompT\"
copy "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP\tmplts" "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\1Cv82\tmplts"
copy "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP\*.*" "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82\"
copy "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP\Logs\*.*" "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82\logs\"
copy "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP\Conf\*.*" "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\1Cv82\Conf\"

rd /s /q "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP"
rd /s /q "%systemdrive%\Documents and Settings"\%1\"Local Settings\Application Data\1C\TEMP"

echo Cleared: %1
:exit

5. clrW7.bat:
читать дальше »
IF EXIST "%systemdrive%\Users"\%1"\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch" goto clear
echo Skipped: %1
goto exit
:clear
md "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP\"
md "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP\ExtCompT\"
md "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP\"
md "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP\Logs\"
md "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP\Conf\"

copy "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82\*.*" "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP"
copy "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82\ExtCompT\*.*" "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP\ExtCompT"
move "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82\tmplts" "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP\tmplts"
copy "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82\*.*" "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP"
copy "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82\Logs\*.*" "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP\Logs"
copy "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82\Conf\*.*" "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP\Conf"

rmdir /s /q "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82"
rmdir /s /q "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82"

md "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82"
md "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82\ExtCompT"
md "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82"
md "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82\Logs"
md "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82\Conf"

copy "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP\*.*" "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82\"
copy "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP\ExtCompT\*.*" "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82\ExtCompT\"
move "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP\tmplts" "%systemdrive%\Users"\%1\"AppData\Roaming\1C\1Cv82\tmplts"
copy "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP\*.*" "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82\"
copy "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP\Logs\*.*" "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82\logs\"
copy "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP\Conf\*.*" "%systemdrive%\Users"\%1\"AppData\Local\1C\1Cv82\Conf\"

rd /s /q "%systemdrive%\Users"\%1\"AppData\Roaming\1C\TEMP"
rd /s /q "%systemdrive%\Users"\%1\"AppData\Local\1C\TEMP"

echo Cleared: %1
:exit

есть ли возможность с помощью одного скрипта на VBS выполнить те же самые операции? так как для корретного использования Файл 106015 требует инструкцию пользователя с указанием что запускать для работы, а что является вспомогательным инструментом.

Iska 31-10-2013 00:43 2244300

XaHAleX, полагаю, можно. Опишите словами. Подробно.

XaHAleX 31-10-2013 06:47 2244347

Iska, куда еще подробнее... :)
надо написать скрипт на VBS который удалял бы лишние папки в профилях пользователей ПК:
т.к. в зависимости от винды каталоги пользователей находятся либо в Document and Settings либо в Users, то нужна переменная, которая будет принимать данные значения, например, если WinXP, то переменная равна "%systemdrive%\Documents and Settings", иначе равна "%systemdrive%\Users", затем надо запустить цикл, который будет обходить все найденные каталоги пользователей и будет удалять\копировать\перемещать\создавать "лишние" папки (в батниках же описано, они же работают), просто неудобно рассылать 5 батников и инструкцию пользователям, которые читают после того как все попробуют запустить...

Iska 31-10-2013 09:04 2244387

Цитата:

Цитата XaHAleX
то нужна переменная, которая будет принимать данные значения, например, если WinXP, то переменная равна "%systemdrive%\Documents and Settings", иначе равна "%systemdrive%\Users" »

XaHAleX, не нужна, поскольку она уже есть. Называется «%UserProfile%\..».


Цитата:

Цитата XaHAleX
в батниках же описано, они же работают »

«Как делает» — не описано. И, главное — «зачем и почему именно так делает» — тоже. Описано — «что делает». Но мне не это нужно.

XaHAleX 31-10-2013 10:10 2244410

Iska, давайте еще раз, т.к. я явно на бронепоезде в VBS.
Есть терминальный сервер с пользователями 1С, во временных папках пользователей 1С создает временные папки, а также рабочие папки и файлы. Временные папки необходимо вычищать эпизодически. Есть несколько вариантов очистки: через планировщик добавить задание на запуск скрипта; запихнуть в папку Netlogon и добавить в профиль нужных пользователей при запуске системы - но эти два варианта выполняться будут периодически. Необходим ручной запуск скрипта, который отрабатывал бы на различных ОС и вычищал бы только временные каталоги 1С.
При запуске первого батника, как описано выше, проверяется наличие папки 1С в каталоге "%AllUsersProfile%", если есть, то Винда Виста и выше, если нет, то ХР\2003 и запускается второй\третий батник. Второй\третий батник присваивают переменной каталог пользователя:
for /f "usebackq delims==" %%i in (`"dir "%systemdrive%\Documents and Settings" /ad /b"`) do call clrXP.bat "%%i" и
for /f "usebackq delims==" %%i in (`"dir "%systemdrive%\Users" /ad /b"`) do call clrW7.bat "%%i" соответственно и передают в четвертый\пятый батник, который производит следующие действия с каталогами: создает каталог Temp, куда копирует\перемещает нужные файлы и каталоги, затем удаляет каталоги 1С пользователя, после этого снова создает каталоги 1С и перемещает\копирует нужные каталоги из каталога Temp, который в итоге удаляется. Кроме того в четвертом\пятом батнике проверяется что учетка ОС не пустая, т.е. пользователь хоть раз заходил в систему и был создан профиль:
IF EXIST "%systemdrive%\Documents and Settings"\%1"\Application Data\Microsoft\Internet Explorer\Quick Launch" goto clear
echo Skipped: %1
goto exit
:clear
md "%systemdrive%\Documents and Settings"\%1\"Application Data\1C\TEMP\"
...
...
echo Cleared: %1
:exit
Каким образом будет отрабатывать переменная %UserProfile% в данной задаче не пойму (как перебрать в ней всех пользователей, а не текущую)... :(

Iska 31-10-2013 10:57 2244443

Цитата:

Цитата XaHAleX
Каким образом будет отрабатывать переменная %UserProfile% в данной задаче не пойму »

Цитата:

Цитата Iska
Называется «%UserProfile%\..». »


XaHAleX 31-10-2013 15:26 2244624

Iska, лады, один батник я уберу (самый первый) поменяю пути относительно переменной %UserProfile%. Как теперь обходить все учетки и выполнять действия над папками в одном скрипте?


Время: 18:27.

Время: 18:27.
© OSzone.net 2001-