Войти

Показать полную графическую версию : Перенос содержимого BAT в VBS


kolumb 8034
24-02-2013, 21:57
Как прописать в 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
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c c:\your_batch.cmd", 0, false

kolumb 8034
24-02-2013, 22:50
Немного не поняли меня не подключить BAT а полностью перенести код в VBS что бы был вообще только один файл VBS без BAT

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

kolumb 8034
24-02-2013, 23:47
Iska,
Я на примере написал localhost после там будет другой адрес !

Iska
25-02-2013, 00:11
Потрясающе. 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
Может я немного не так написал ! Смыл такой : Есть к примеру два файла run.vbs и start.vbs start прописую в автозагрузку с указанным выше кодом при загрузке компьютера загружается start и если есть пинг к указанному адресу N количество раз подгружается run! Как то так !!!

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

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

XaHAleX
30-10-2013, 15:34
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
XaHAleX, полагаю, можно. Опишите словами. Подробно.

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

Iska
31-10-2013, 09:04
то нужна переменная, которая будет принимать данные значения, например, если WinXP, то переменная равна "%systemdrive%\Documents and Settings", иначе равна "%systemdrive%\Users" »
XaHAleX, не нужна, поскольку она уже есть. Называется «%UserProfile%\..».

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

XaHAleX
31-10-2013, 10:10
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
Каким образом будет отрабатывать переменная %UserProfile% в данной задаче не пойму »
Называется «%UserProfile%\..». »

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




© OSzone.net 2001-2012