下面是引用edwin82于2006-04-19 17:52发表的 请问这2段cmd语法有什么不同:
第一段是我看书自己写的
CLS
@ECHO OFF
ECHO.
.......
其实第一篇跟第二篇的比较是没有什么多大的特性,
第一篇是使用程式的回圈去执行每一各 .exe 的档案,而 /Q /N /Z 跟 /Q:A /R:N 是
msiexec 的档案执行参数
第二篇就是一般的 COMMAND 的东西跟第一篇差不了多少,大同小异‧‧‧
而你说的,
FOR %%i IN (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 %%i:\CD.txt
SET CDROM=%%i:
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
这三段的意义就是说,我制作了一个回圈,依序寻找 C:\cd.txt、D:\cd.txt、E:\cd.txt‧‧‧‧
当在某一个槽面找到 cd.txt 档的时候设定 CDROM 为该槽面。
譬:我将 cd.txt 档放在 CD 片的根目录下
所以我设定了回圈
FOR %%i IN (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 %%i:\CD.txt
依指令的动作分别在 D:\cd.txt'、 E:\cd.txt 搜寻我的档案位置槽面。
比如我的 CD-ROM 是 H 槽,所以当回圈执行到 H:\cd.txt 的时候,寻到了档案就跳出回圈,
而我的 %%i 的值就等于 H
所以 SET CDROM=%%i 的意思就是这样,等于 SET CDROM=H
所以依上面的解说,自己也能自行设定 SET 值
很多人喜欢打档案放在 $OEM$\$1
比如我的 $1 的目录下有 SOFT 跟 UPDATE 还有 SVCPACK 三个目录
所以我就简略的设定了
SET SOFT=%SYSTEMDRIVE%\SOFT
SET UPDATE=%SYSTEMDRIVE%\UPDATE
SET SVCPACK=%SYSTEMDRIVE%\SVCPACK
所以当我执行 RunOnceEx 的 REG 设定的时候就简便多了,
REG ADD %KEY%\005 /VE /D "MS .NET Framework 1.1 SP1" /f
REG ADD %KEY%\005 /V 1 /D "
%Update%\DOTNETFX\netfxsp1.exe" /f
REG ADD %KEY%\005 /V 2 /D "
%Update%\DOTNETFX\LAN11.EXE" /f
REG ADD %KEY%\006 /VE /D "MS .NET Framework 2.0" /f
REG ADD %KEY%\006 /V 1 /D "
%Update%\DOTNETFX\NET20\INSTALL /Q" /f
REG ADD %KEY%\010 /VE /D "Yahoo Messenger 7.1" /f
REG ADD %KEY%\010 /V 1 /D "
%Soft%\Yahoo.exe" /f