Вопрос по автозапуску vbs скрипта
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Вопрос по автозапуску 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, а остальное из папки администратор?
|
|
|
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 где? Проясни эти моменты
|
|
|
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 находится в этой же папке что и остальные компоненты да мне по началу тоже казалось что всё нормально, но это если запускаешь скрипт ручками, а в автозагрузке он ведёт себя странно, видимо он запускается не от юзера, но код запускающего скрипта делал запуск батника как от юзера, а когда я добавил проверку на картридер по букве диска, скрипт стал гнать. Я хотел сделать что-то автоматически копирующееся на флешки, вещь интересная и каспером не видимая, но вот эти лаги исправить бы.
|
|
|
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:>nul 2>&1 && set zz=!zz!,%%d ;проверяем не картридер ли это if "%zz:~1,1%"=="e" goto a1 Что делает зеленый кусок не понял. Что он делает и в каких случаях должен не сработать? Красный кусок тоже не совсем понятен. "%zz:~1,1%"=="e" эквивалентно z=e и всегда переход на a1 или я чего-то непонимаю…
|
|
|
RE: Вопрос по автозапуску vbs скрипта - 2011-08-12 16:24:32.630000
|
|
|
qwestion123
Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
|
2>&1 запрет вывода сообщения об ошибке set zz=!zz!,%%d это мы придали значение переменной zz о типе носителя по букве диска "in (e)"
|
|
|
RE: Вопрос по автозапуску vbs скрипта - 2011-08-12 16:54:52.343333
|
|
|
qwestion123
Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
|
"%zz:~1,1%"=="e" если мы поставили диск :е в скрипт то если в переменной не пустое значение результат такой: е==е
|
|
|
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 не подскажешь?
|
|
|
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 > e1.txt for /F "skip=1" %%i IN ('type e1.txt') Do dir %%i:>nul 2>&1 if not errorlevel 0 start test.bat %%i т.е. если флэшка есть в системе - запустить батник и передать ему как параметр диск флэшки. этот батник будет в автозагрузке. А второй - где надо. После загрузки он будет раз в 5 (например) секунд проверять есть ли флэшка и копировать на нее то что надо…
|
|
|
RE: Вопрос по автозапуску vbs скрипта - 2011-08-15 11:48:16.030000
|
|
|
qwestion123
Сообщений: 9
Оценки: 0
Присоединился: 2011-08-11 18:50:57.686666
|
namepunk идея эта мною рассмотрена давно, проблема в процессе копирования, то есть, скрипт копирования должен быть универсален, копироваться незаметно с флешки, при старте системы из папки на диске, старый скрипт был проблемным только потому что считал пустые диски картридера локальными дисками, еслиб не это я бы ничего не менял, но новый мой скрипт работает правильно только при ручном запуске.
|
|
|
|
|