WinPE, Startnet.CMD и передача переменных во второй пакетный файл не работает

9767
LunchBox

Я не знаю скриптов или PowerShell (да, мне нужно чему-то научиться). Я не эксперт в создании пакетных файлов.

У меня есть флешка WinPE, которую я использовал для развертывания образов ОС. У меня есть WIM, драйверы и все, что нужно, кроме среды WinPE, чтобы мне было легче вносить изменения, изменения.

Я использую пакетный файл "STARTNET.CMD", который является частью WinPE.

Причиной использования дисков с буквами является то, что WinPE всегда получает назначенный диск с буквой X. Сама флешка может получать случайное письмо, которое всегда меняется.

Мое меню развертывания находится на флешке само по себе, а не внутри WinPE. Это так, что если мне нужно внести изменения, мне не нужно повторно делать WinPE.

Я могу найти командный файл "menu.bat" и запустить его. Я использую переменную для захвата буквы диска. Я вызываю второй пакетный файл с именем «menu.bat» и передаю ему переменную.

Когда загружается второй пакетный файл, я считаю, что я правильно вызываю переменную. Если я выйду из командного файла, я могу вызвать переменную и увидеть ожидаемый ответ. Проблема в том, что я не могу использовать переменную для работы с чем-либо во втором пакетном файле. В моем тесте я могу заставить это работать снова и снова. Когда он работает с настоящей флешки, он не работает. Я удалил комментарии из второго пакетного файла, чтобы уменьшить его.

Моя проблема в том, что файлы ниже всех получают сообщение о том, что система не может найти указанный путь.

Diskpart Imagex.exe bcdboot.exe 

Почему я не могу заставить переменную нормально функционировать, когда я пытаюсь использовать пример "ImageX.exe"?

Содержимое Startnet.cmd

@echo off for %%p in (a b 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 %%p:\Tools\ set w=%%p Set execpatch=%w%\Tools\ call %w%:\Menu.bat \Tools\ 

Содержание Menu.BAT

@echo off set SecondPath=%1 cls :Start cls Echo. Echo.============================================================== Echo. Windows 7 64 Bit Ent Basic Desktops Echo.============================================================== Echo. Echo A. 790 Windows 7 - Basic Echo. Echo. Echo I. Exit Echo. Echo.  set /p choice=Choose your option =   if not '%choice%'=='' set choice=%choice:~0,1%  if '%choice%'=='a' goto 790_Windows_7_Basic  echo "%choice%" is not a valid (answer/command) echo.  goto start :790_Windows_7_Basic  REM DISKPART /s %SecondPath%BatchFiles\Make-Partition.txt  %SecondPath%imagex.exe /apply %SecondPath%Images\Win7-64b-Ent-Basic-SysPreped.wim 1 o:\ /verify  %SecondPath%bcdboot.exe o:\Windows /s S:  Copy %SecondPath%Unattended\unattend.XML o:\Windows\System32\sysprep\unattend.XML /y  xcopy %SecondPath%Drivers\790\*.* o:\Windows\INF\790\ /E /Q /Y  MD o:\Windows\Setup\Scripts\ Copy %SecondPath%BatchFiles\SetupComplete.cmd o:\Windows\Setup\Scripts\ /y  Goto Done  :Done Exit 
0
Добро пожаловать в Супер пользователя! Пожалуйста, позаботьтесь о правильном форматировании ваших сообщений. Вставьте код, выберите его и нажмите `Ctrl-K`, чтобы сделать отступ, чтобы он отображался в виде кода. В будущем проверьте нашу справку по форматированию. slhck 11 лет назад 0

3 ответа на вопрос

0
uSlackr

Помогает ли использование Setx? Он изменяет среду среды пользователя или системы. Посмотрите на Setx /?больше

Никогда не слышал об этой команде, но это должно быть довольно хорошо. Я буду испытывать с этим - спасибо LunchBox 11 лет назад 0
0
Sam

Вы должны проверить файл «\ sources \ boot.wim», открыть этот файл, а затем убедиться, что эти файлы «\ tools \ imagex.exe и bcdboot.exe» имеют правильный каталог в boot.wim.

да все находится в правильном каталоге, и если я запускаю все вручную, это работает. Это пакетный файл, который не имеет. Ответ Гарри Джонсона фактически помог решить мою проблему LunchBox 11 лет назад 0
0
Harry Johnston

Судя по всему, последняя строка в вашем startnet.cmdфайле должна быть

call %w%:\Menu.bat %w%:\Tools\ 

поскольку menu.batочевидно ожидает, что первым аргументом будет полный путь к каталогу Tools, включая букву диска.

Обратите внимание, что startnet.cmdустанавливает переменную окружения с именем, wкоторое menu.batможно использовать (но в настоящее время нет!), Так что другое решение было бы заменить все экземпляры %SecondPath%с %w%:%SecondPath%.

В итоге получилось использовать: LunchBox 11 лет назад 0
Что сработало, так это то, что я использовал первую переменную, которую я установил. Первая переменная называется% MainPath%, и ее коллега рекомендовала передать эту переменную во второй пакетный файл, но использовать другое имя для переменной, чтобы избежать путаницы. Ну, это не сработало, но то, что сработало, это se:% MainPatch% \ Images \ *. Wim и т. Д. Я проверю, как вы предлагаете, хотя для моих собственных знаний. Спасибо LunchBox 11 лет назад 0