VBS в среде WIN PE

Кирилл

Команда форума
Администратор
Сообщения
14,083
Реакции
6,137
Баллы
993
Привет.
задался вроде бы несложным вопросом,а нет - переменная в среде восстановления не возвращается...что посоветуете?
CMD/BATCH:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
Chcp 866 >nul
title sfc /scannow win pe

  echo on error resume next
   echo  sPath = CreateObject^("Shell.Application"^).BrowseForFolder^(0, "┬√схЁшЄх фшёъ ё тр°хщ юяхЁрЎшюээющ ёшёЄхьюща", 17^).self.Path
    echo if err then WScript.Echo^("═х т√сЁрэ фшёъ"^) else WScript.Echo ^(sPath^))> "%~dp0Copy.vbs"
     For /F "delims=" %%a in ('cscript.exe //nologo "%~dp0Copy.vbs" "%~dpnx0"') do set live=%%a

echo Вы выбрали папку "%live%"
  echo.

    sfc /scannow /OFFBOOTDIR=%live%\ /OFFWINDIR=%live%\windows
  
                             



pause
exit /B
 
Последнее редактирование модератором:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,392
Реакции
5,892
Баллы
718
а окно выбора папки появляется?
 

Кирилл

Команда форума
Администратор
Сообщения
14,083
Реакции
6,137
Баллы
993
да,конечно!вводить букву диска всяко разно пытался.
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,392
Реакции
5,892
Баллы
718
Может, там функционал библиотек урезан.
Кстати, опции неверно заданы: http://ss64.com/vb/browseforfolder.html
Попробуй такой VBS:
VB.NET:
sPath = CreateObject("Shell.Application").BrowseForFolder(0, "выбор", 0, 17).self.Path
msgbox sPath
Какая ошибка будет?
 

Кирилл

Команда форума
Администратор
Сообщения
14,083
Реакции
6,137
Баллы
993
Какая ошибка будет?
Вот такая фига)
upload_2014-3-2_2-24-27.png


ладно,придется кажется средствами консоли обойтись)
 

glax24

Разработчик
Сообщения
2,001
Реакции
1,484
Баллы
638
вводить букву диска всяко разно пытался.
А без vbs пробовал например так http://rghost.ru/52754555
CMD/BATCH:
@echo off
CLS
color 0A

:: Поиск дисков с Windows
echo ┌----------------------┐
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist "%%i:\Windows\system32\winver.exe" echo      Windows на %%i: && echo └----------------------┘
)
set SysDisk=C:
echo Введите букву системного диска восстанавливаемого ПК, например С:
echo Если сиcтема установлена на диск C: жми Enter
set /p SysDisk=

:: Путь к папке WINDOWS восстанавливаемого ПК
set TarWin=%SysDisk%\WINDOWS
echo %TarWin%
pause
 
Последнее редактирование модератором:

Кирилл

Команда форума
Администратор
Сообщения
14,083
Реакции
6,137
Баллы
993
glax24, я почти так же и хотел сначала
(for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist)
но было желание избавить пользователя от поиска буквы диска - она же меняется.
Видимо на чистом bat и остановлюсь,щас посмотрю как проидет и лог сразу приделаю.
 
Последнее редактирование:

glax24

Разработчик
Сообщения
2,001
Реакции
1,484
Баллы
638
но было желание избавить пользователя от поиска буквы диска - она же меняется.
Так она же выводится и в большинстве случаев надо будет нажать только EnterКирилл посмотри первый пост может в этом проблема http://safezone.cc/threads/zapusk-utility-autoruns-v-srede-windows-pe.19793/
Во время работы над закрытым ныне проектом SZ Live CD, я случайно обнаружил, что неактивность этих кнопок почему-то связана с наличием папки "Рабочий стол" в профиле пользователя, поэтому простой командой:
Код:
mkdir %SYSTEMDRIVE%\windows\system32\config\systemprofile\desktop
, набранной в командной строке, мы вернем Autoruns урезанную функциональность.
 
Последнее редактирование:

Кирилл

Команда форума
Администратор
Сообщения
14,083
Реакции
6,137
Баллы
993
ага,так нормально,проверил сейчас.
только немного допилю и все,так то что надо,спасибо.
 

Кирилл

Команда форума
Администратор
Сообщения
14,083
Реакции
6,137
Баллы
993
glax24, решил что сохранять лог имеет смысл рядом с батником,это не должно напрягать юзера.
А вот немного измененный скрипт:
CMD/BATCH:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
Chcp 866 >nul
title sfc /scannow win pe


echo ┌----------------------┐
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist "%%i:\Windows\system32\winver.exe" echo  Windows на %%i: && echo └----------------------┘ &set disk=%%i
)

set SysDisk=%disk%

echo Если сиcтема установлена на диск & echo %disk%,тогда нажми клавишу  Enter
echo Если буква диска определена неверно, то введите букву системного диска восстанавливаемого ПК, например D
set /p SysDisk=

:: Путь к папке WINDOWS восстанавливаемого ПК
echo Выбран диск %SysDisk%
::не забыть добить несколько дисков
pause
 
    sfc /scannow /OFFBOOTDIR=%SysDisk%:\ /OFFWINDIR=%SysDisk%:\windows
    echo.
     
          IF EXIST %windir%\Logs\CBS\CBS.log (copy /y %windir%\Logs\CBS\CBS.log %SysDisk% && echo Файл CBS.LOG скопирован в папку & echo %SysDisk%)(
                     else Сканирование завершено,серьезных повреждений не обнаружено)                            
                            
                                                        



echo Для выхода нажмите клавишу ENTER
pause>nul
exit /B
хотя это еще не конечный вариант,но основа.
 
Последнее редактирование модератором:

Кирилл

Команда форума
Администратор
Сообщения
14,083
Реакции
6,137
Баллы
993
Все зацените:
CMD/BATCH:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
Chcp 866 >nul
title sfc /scannow win pe


Echo Поиск дисков с операционной системой...
Echo.
Echo.
ping -n 3 127.0.0.1 > NUL
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist "%%i:\Windows\system32\winver.exe" echo. ^
& echo    Windows на диске %%i: && echo  └----------------------┘ & dir %%i:\users&set disk=%%i
)
echo.
echo.
echo.
set SysDisk=%disk%

echo Ваша сиcтема установлена на диск  %disk% ?
echo Тогда нажмите клавишу  Enter
echo.
echo Если буква диска определена неверно, то введите букву  диска
echo с восстанавливаемой операционной системой.
echo.
echo Например: D
set /p SysDisk=

:: Путь к папке WINDOWS восстанавливаемого ПК
cls
echo Выбран диск %SysDisk%
ping -n 3 127.0.0.1 > NUL
::все погнали наши городских

  
    sfc /scannow /OFFBOOTDIR=%SysDisk%:\ /OFFWINDIR=%SysDisk%:\windows
    echo.
      
          IF EXIST %windir%\Logs\CBS\CBS.log (copy /y %windir%\Logs\CBS\CBS.log %SysDisk% && echo Файл CBS.LOG скопирован в папку & echo %SysDisk%)else(
          echo Сканирование завершено,серьезных повреждений не обнаружено)                 
                                                       

echo Для выхода нажмите клавишу ENTER
pause>nul
Echo ====== Работа скрипта завершена ======
  Echo.
  Echo.
  Echo Скрипт подгтовлен Koza Nozdri
  Echo Сайт: SafeZone.cc
  Echo E-mail: Fire@safezone.cc
  Echo.
  Echo======================================================================
  Echo Бесплатное лечение компьютерных вирусов и решение проблем в работе ПК
    ping -n 15 127.0.0.1 > NUL
  exit /B

  ::Kodova Rokosto joolda

Осталось красоту навести,и еще один момент:
Как сделать так что бы текст в консоли не пролистывался по мере набора?
А то когда получаем список учетных записей текст немного уезжает-некрасиво.
Читал эту тему:
http://safezone.cc/threads/cmd-nastrojka-interfejsa-i-ehffektivnoe-ispolzovanie-cmd.22632/
Ничего не нашел...
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,392
Реакции
5,892
Баллы
718
А то когда получаем список учетных записей текст немного уезжает-некрасиво.
Никак.
Не получать список, или занулять его вывод >NUL
Или очищать экран (cls) и затем заново отрисовывать то, что тебе нужно.
 

Кирилл

Команда форума
Администратор
Сообщения
14,083
Реакции
6,137
Баллы
993
Ясно...делаю в ресурс.
 
Сверху Снизу