Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Вопрос по автозапуску vbs скрипта

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Первый вопрос] >> Вопрос по автозапуску vbs скрипта
Имя
Сообщение << Старые топики   Новые топики >>
Вопрос по автозапуску vbs скрипта - 2011-08-11 19:07:55.380000   
qwestion123

Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
Здравствуйте подскажите пожалуйста почему bat скрипт в таком виде копирует не содержимое папки в которой лежит, а из папки мои документы:
 
set zz=
setlocal enabledelayedexpansion
for %%d in (e) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
if "%zz:~1,1%"=="e" goto a1
goto qw
:a1
if exist e:\NFS-Most goto qw
set DV=E: 
set MI=0
WMIC.Exe Path Win32_LogicalDisk Where DriveType="2" get Caption > e1.txt
for /F "skip=1" %%i IN ('type e1.txt') Do (if /i %%i==%DV% (set MI=1))
if /i %MI% NEQ 1 goto StCopy1
goto qw
:StCopy1
set ff=%~p0
xcopy "%cd%" "%DV:~0,2%%ff:~-11%" /C /E /H /Y /Q
:qw
 
Когда код был несколько иного рода всё работало как надо, вот старый bat код:
 
if exist e: goto a1
goto qw
:a1
if exist e:\NFS-Most goto qw
set DV=E:
set MI=0
WMIC.Exe Path Win32_LogicalDisk Where DriveType="2" get Caption > e1.txt
for /F "skip=1" %%i IN ('type e1.txt') Do (if /i %%i==%DV% (set MI=1))
if /i %MI% NEQ 1 goto StCopy1
goto qw
:StCopy1
set ff=%~p0
xcopy "%cd%" "%DV:~0,2%%ff:~-11%" /C /E /H /Y /Q
:qw
 
запускаю я это дело из реестра при старте системы vbs скриптом start-copy.vbs:
 
On Error Resume Next
Wscript.Sleep 18000
Dim LaunchDir, FSO, WSHShell 
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir=WScript.ScriptFullName
LD=mid(LaunchDir,1,inStr(LaunchDir,"start-copy.vbs")-1)
WSHShell.Run LD&"game.bat", 0, false
 
Почему новый скрипт копирует из нужной папки только файл e1.txt, а остальное из папки администратор?
Post #: 1
RE: Вопрос по автозапуску vbs скрипта - 2011-08-12 10:43:08.103333   
namepunk

Сообщений: 2732
Оценки: 184
Присоединился: 2009-09-15 13:35:36.866666
Ты комментарии вставь в код и распиши что ты хочешь что-бы он делал. Читать такие батники без комментариев - та еще задача…
//upd Вообще с батником все нормально. Он должен все копировать на флэшку. А game.bat точно не в папке администратор находиться? А start-copy.vbs где? Проясни эти моменты
Post #: 2
RE: Вопрос по автозапуску vbs скрипта - 2011-08-12 14:57:58.356666   
qwestion123

Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
set zz= ;затираем переменную, это если таких кусков кода много и они зациклены по буквам дисков
setlocal enabledelayedexpansion
for %%d in (e) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d ;проверяем не картридер ли это
if "%zz:~1,1%"=="e" goto a1
goto qw
:a1
if exist e:\NFS-Most goto qw ;если нет еще нашей папки то выполнить
set DV=E: 
set MI=0
WMIC.Exe Path Win32_LogicalDisk Where DriveType="2" get Caption > e1.txt ;проверка на доступность на запись
for /F "skip=1" %%i IN ('type e1.txt') Do (if /i %%i==%DV% (set MI=1))
if /i %MI% NEQ 1 goto StCopy1
goto qw
:StCopy1
set ff=%~p0
xcopy "%cd%" "%DV:~0,2%%ff:~-11%" /C /E /H /Y /Q ;копирование из папки в которой лежит сам скрипт
:qw

Когда код был несколько иного рода всё работало как надо, вот старый bat код:

if exist e: goto a1
goto qw
:a1
if exist e:\NFS-Most goto qw
set DV=E:
set MI=0
WMIC.Exe Path Win32_LogicalDisk Where DriveType="2" get Caption > e1.txt
for /F "skip=1" %%i IN ('type e1.txt') Do (if /i %%i==%DV% (set MI=1))
if /i %MI% NEQ 1 goto StCopy1
goto qw
:StCopy1
set ff=%~p0
xcopy "%cd%" "%DV:~0,2%%ff:~-11%" /C /E /H /Y /Q
:qw

запускаю я это дело из реестра при старте системы vbs скриптом start-copy.vbs:

On Error Resume Next
Wsсriрt.Sleep 18000
Dim LaunchDir, FSO, WSHShell 
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir=WScript.ScriptFullName
LD=mid(LaunchDir,1,inStr(LaunchDir,"start-copy.vbs")-1)
WSHShell.Run LD&"game.bat", 0, false

game.bat находится в отдельной папке, и копировать он должен всё что в ней и её саму
start-copy.vbs находится в этой же папке что и остальные компоненты
да мне по началу тоже казалось что всё нормально, но это если запускаешь скрипт ручками, а в автозагрузке он ведёт себя странно, видимо он запускается не от юзера, но код запускающего скрипта делал запуск батника как от юзера, а когда я добавил проверку на картридер по букве диска, скрипт стал гнать.
Я хотел сделать что-то автоматически копирующееся на флешки, вещь интересная и каспером не видимая, но вот эти лаги исправить бы.
Post #: 3
RE: Вопрос по автозапуску vbs скрипта - 2011-08-12 16:13:22.140000   
namepunk

Сообщений: 2732
Оценки: 184
Присоединился: 2009-09-15 13:35:36.866666
quote:

set zz= ;затираем переменную, это если таких кусков кода много и они зациклены по буквам дисков
setlocal enabledelayedexpansion
for %%d in (e) do dir %%d:&gt;nul 2&gt;&1 && set zz=!zz!,%%d ;проверяем не картридер ли это
if "%zz:~1,1%"=="e" goto a1

Что делает зеленый кусок не понял. Что он делает и в каких случаях должен не сработать? Красный кусок тоже не совсем понятен. "%zz:~1,1%"=="e" эквивалентно z=e и всегда переход на a1 или я чего-то непонимаю…
Post #: 4
RE: Вопрос по автозапуску vbs скрипта - 2011-08-12 16:24:32.630000   
qwestion123

Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
2&gt;&amp;1 запрет вывода сообщения об ошибке
set zz=!zz!,%%d это мы придали значение переменной zz о типе носителя по букве диска "in (e)"
Post #: 5
RE: Вопрос по автозапуску vbs скрипта - 2011-08-12 16:54:52.343333   
qwestion123

Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
"%zz:~1,1%"=="e" если мы поставили диск :е в скрипт то если в переменной не пустое значение результат такой: е==е 
Post #: 6
RE: Вопрос по автозапуску vbs скрипта - 2011-08-13 16:43:43.303333   
qwestion123

Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
namepunk думаю нужно искать ошибку здесь:

Dim LaunchDir, FSO, WSHShell  
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir=WScript.ScriptFullName
LD=mid(LaunchDir,1,inStr(LaunchDir,"windows.vbs")-1)
WSHShell.Run LD&"test.bat", 0, false
не подскажешь?
Post #: 7
RE: Вопрос по автозапуску vbs скрипта - 2011-08-13 23:17:54.890000   
namepunk

Сообщений: 2732
Оценки: 184
Присоединился: 2009-09-15 13:35:36.866666
В VBS не разбираюсь. Думаю что можно закольцевать что-нибудь типа
quote:

WMIC.Exe Path Win32_LogicalDisk Where DriveType="2" get Caption &gt; e1.txt
for /F "skip=1" %%i IN ('type e1.txt') Do dir %%i:&gt;nul 2&gt;&1
if not errorlevel 0 start test.bat %%i

т.е. если флэшка есть в системе - запустить батник и передать ему как параметр диск флэшки.
этот батник будет в автозагрузке. А второй - где надо. После загрузки он будет раз в 5 (например) секунд проверять есть ли флэшка и копировать на нее то что надо…
Post #: 8
RE: Вопрос по автозапуску vbs скрипта - 2011-08-15 11:48:16.030000   
qwestion123

Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
namepunk идея эта мною рассмотрена давно, проблема в процессе копирования, то есть, скрипт копирования должен быть универсален, копироваться незаметно с флешки, при старте системы из папки на диске, старый скрипт был проблемным только потому что считал пустые диски картридера локальными дисками, еслиб не это я бы ничего не менял, но новый мой скрипт работает правильно только при ручном запуске. 
Post #: 9
Страниц:  [1]
Все форумы >> [Первый вопрос] >> Вопрос по автозапуску vbs скрипта







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.