我有一些工具正在尝试在 MDT 服务器的后端批处理脚本。这些工具之一是 DISM/ImageX。我试图自动化的是一个检查文件夹的脚本,以便 DISM 可以提取单个 WIM 文件,然后我可以使用另一个实用程序来进行更新。
不进入 WSUS。也不是 SCCM。我知道可以使用它们来完成,但我希望将我的部署时间保持在每个给定操作系统的最新版本接近 15-20 分钟。
我有很多后端工具可以正常工作,但是我在压缩批处理文件的这一部分时遇到了问题,以便它使用 for 循环来检查目录,而不是一遍又一遍地重复相同的代码。
我从来没有真正接触过批处理脚本,但是嘿,它似乎几乎可以完成我能想到的所有技巧,而且我一直在寻找优化我的代码的方法。
也许有人可以看到我在这里尝试用我的批处理文件做什么,告诉我我做错了什么?
我已经写了很长的路,但我想用 =< 1 for 循环压缩这段代码。
setlocal
set EnabledDelayedExpansion
set _d=\\cp
set 3d_=G:\DISM
set 3d7a=%3d_%\7
set 3d7b=%3d_%\7\7.1
set 3d7c=%3d_%\7\7.2
set 3d7d=%3d_%\7\7.3
set 3d7e=%3d_%\7\7.4
set 3d8a=%3d_%\8
set 3d8b=%3d_%\8\8.1
set 3d8c=%3d_%\8\8.2
set 3d8d=%3d_%\8\8.3
set 3d8e=%3d_%\8\8.4
set 3dxa=%3d_%\10
set 3dxb=%3d_%\10\10.1
set 3dxc=%3d_%\10\10.2
set 3dxd=%3d_%\10\10.3
set 3dxe=%3d_%\10\10.4
goto :3d7f
:3d7f
for /f "tokens=5 delims= " %%a in ('%3d7a% %3d7b% %3d7c% %3d7d% %3d7e%') do
(
if not exist %%a (
mkdir %%a)
goto :3d8f
:3d8f
for /f "tokens=5 delims= " %%a in ('%3d8a% %3d8b% %3d8c% %3d8d% %3d8e%') do
(
if not exist %%a (
mkdir %%a)
goto :3dxf
:3dxf
for /f "tokens=5 delims= " %%a in ('%3dxa% %3dxb% %3dxc% %3dxd% %3dxe%') do
(
if not exist %%a (
mkdir %%a)
goto :exit
)
寻找创建顶部设置变量中列出的目录,使用迭代 for 循环检查目录是否存在,如果不存在则创建它们。
每个变量都将正确的目标目录本地化到另一个全局批处理文件中,以便最终分发到其他 MDT 服务器,这是我现在正在处理的部分。
- 编辑了 Squashman @ 5:34EST 1/1/19 指出的错误(谢谢老兄)