我不懂脚本或 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 中是否有正确的目录。