WinPE,Startnet.CMD 和将变量传递给第二个批处理文件不起作用

WinPE,Startnet.CMD 和将变量传递给第二个批处理文件不起作用

我不懂脚本或 PowerShell(是的,我需要学习一些东西)。我也不是批处理文件制作专家。

我有一个 WinPE 闪存驱动器,用于部署操作系统映像。我有 WIM、驱动程序以及 WinPE 环境之外所需的任何其他东西,以确保我可以更轻松地进行更新和更改。

我使用“STARTNET.CMD”批处理文件,它是 WinPE 的一部分。

之所以要检查驱动器的字母,是因为 WinPE 总是会分配到 X 个字母的驱动器。闪存驱动器本身可以接收一个随机字母,而且该字母总是会变化。

我的部署菜单位于闪存驱动器本身上,而不是 WinPE 内。这样,如果我需要进行更改,就不必重新执行 WinPE。

我能够找到“menu.bat”批处理文件并启动它。我使用变量来捕获字母驱动器。我调用名为“menu.bat”的第二个批处理文件并将变量传递给它。

当第二个批处理文件加载时,我相信我正确调用了变量。如果我退出批处理文件,我可以回显变量并看到预期的回复。问题是我无法使用该变量处理第二个批处理文件上的任何内容。在我的测试中,我可以反复使用它。当它从真正的 USB 闪存驱动器运行时,它不起作用。我从第二个批处理文件中删除了注释以使其更小。

我的问题是,下面的所有文件都收到一条消息,指出系统找不到指定的路径。

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\

菜单.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

答案1

从外观上看,startnet.cmd文件中的最后一行应该是

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

因为menu.bat显然期望第一个参数是 Tools 目录的完整路径,包括驱动器号。

请注意,startnet.cmd设置了一个名为的环境变量w,可以使用(但当前没有!),因此另一个解决方案是用替换menu.bat所有实例。%SecondPath%%w%:%SecondPath%

答案2

使用 Setx 有帮助吗?它会修改用户或系统环境。查看Setx /?更多

答案3

您应该检查“\sources\boot.wim”文件,打开此文件,然后检查这些“\tools\imagex.exe 和 bcdboot.exe”文件在 boot.wim 中是否有正确的目录。

相关内容