下面是引用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