Я не знаю скриптов или 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\

Содержание меню.ЛЕТУЧАЯ МЫШЬ

@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

3 ответа3

0

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

0

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

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

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .