【求助】請問這批次檔哪出問題了呢?



贊助商連結


sai
2004-12-14, 03:42 AM
我做了一個偵測光碟是否正確而自動接續安裝軟體的BATCH
不過問題在於無窮迴圈啊..不會自動執行下一行
FOR %%d IN (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 %%d\CD.HTM (SET CDROM=%%d)ELSE goto findcd
這是其中關鍵所在.我是哪裡做錯了呢??
請各位大大幫忙看看了~"~

**我做出來新的批次了.模擬結應該是沒問題的
可以IF NOT A THEN B
不過還是請各位幫我看看有沒什麼缺失或可以改進的
拜託了
**再次修改批次.使其可以即時偵測到%CDROM%\CD.HTM

贊助商連結


jute
2004-12-14, 08:41 PM
我把它改成這樣:

@echo off

ECHO.
ECHO 即將自動安裝OfficeXP
ECHO.
set cdrom=
:findcd
FOR %%d IN (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 %%d:\CD.HTM set cdrom=%%d
if %cdrom%a==%a goto nocd

ECHO 在 %cdrom% 找到OFFICE了
::ECHO 安裝中...
::start /wait %CDROM%\Office\setup.exe transforms=full.mst /QB
::start /wait %CDROM%\Office\Plugin\BiDict.msi /QB
::start /wait %CDROM%\Office\Plugin\tcscconv.msi /QB
::start /wait %CDROM%\Office\Plugin\symsetup.exe /Q
::start /wait %CDROM%\Office\Plugin\rhd.msi /QB
goto end

:nocd
ECHO 請插入 SelfXP_Office 光碟
PAUSE
goto findcd

:end
是可以執行, 不過會跳出幾個錯誤視窗說 "磁碟機中沒有磁片. 請在磁碟機 \Device\Harddisk2\DRx 中插入磁片"
雖然一直按 "繼續" 就可執行到底, 但總是麻煩...

還不知道問題出在哪, 現在也還沒時間去設法解決這個錯誤訊息, 不過總是解決了語法上的問題. 暫時就先這樣吧, 若有人知道還請指點一二. :)

PS. 為了測試方便, 我把執行安裝的指令部份都加上 :: 暫時取消掉, 你可自行再啟用.

jute
2004-12-14, 10:19 PM
找到原因了, 原來是因為我插著讀卡機, 裡面又沒放卡片的緣故...
也就是說, 如果 A-Z 碟裡有任何一碟是卸除式存放裝置 (例如讀卡機或光碟機) 而裡面沒放東西的話, 就會跳出視窗說找不到磁片. 我把讀卡機拔掉就什麼事都沒了.

不過這也表示你光碟裡如果沒有放片子, 這個警告視窗還是會跳出來 (雖然只要按 "繼續" 就行了)...

sai
2004-12-14, 11:22 PM
謝謝jute啊,你改出來的指令簡單很多@"@
不過if %cdrom%a==%a goto nocd我不明白是什麼意思
是可以猜出來.不過看是看不懂耶@"@能說明一下嗎?
那個視窗我也有踫到,不過因為那是在沒放入正確光碟時才會出現的
所以我就不管了.反正也是個要求放入碟片的訊息

jute
2004-12-15, 10:06 AM
謝謝jute啊,你改出來的指令簡單很多@"@
不過if %cdrom%a==%a goto nocd我不明白是什麼意思
是可以猜出來.不過看是看不懂耶@"@能說明一下嗎?
那個只是在檢查 %cdrom 這個值是不是空白.
如果它是空白的話, 就表示沒有找到 Office 光碟, 於是跳到 :nocd 去.

寫成這樣可能比較易懂:
if cdrom + a = a then goto nocd

不管 a 裡面有什麼, 若 cdrom+a=a, 那麼 cdrom 就是空的.
在 VB 裡, 你可以用 if cdrom="" 來判斷, 但"" 在批次語言裡似乎沒啥作用, 所以用上述方法.

sai
2004-12-15, 11:11 PM
喔喔~~了解.就是以數學觀念來看嘛
如果CDROM=0時,才會CDROM+a=a
原來是這樣喔~我當時一直想,要怎麼寫找不到的指令...才寫
IF NOT EXIST %CDROM%\CD.HTM ....