@echo off
setlocal
set PATHTOFIXES=\\192.168.2.205\it\Update_i386
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
上面是一段批次檔的語法,但是我想在
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
這一段加一個判斷,因為我要做出安裝過的話就不要去執行。通常這個檔裝過會在
windows的資料夾下產生一個文字檔例如 KB956841.log 這樣子的檔名,不知道有沒有大大知道該怎麼寫,我想過是用IF但怎麼判斷卻想不出來,請大大指導一下謝謝
請問這位高手,那如果我想要寫一個批次檔是刪掉資料夾且裡面有資料,但我要刪的名稱是有「$」開頭的資料夾,這樣子有辦法做到嗎?
於 2008-11-15 22:00:29 補充
最佳解答(網友推薦)
第 4 行的意思是說,在 Windows 的安裝目錄下(%windir% 是系統環境變數) 若不存在KB956841.log這個檔案,則會執行第一個括號內的指令。
反之,當檔案已存在時則會執行else後面括號內的指令。當判斷式成立時,你若不只要執行一個指令時,則可將第 4 行改寫成:
要特別注意括號的位置,例如else前後的括號。
舉例供你參考,若有疑問可以再討論。
20人
你可以使用下列判斷方式:
@echo off setlocal set PATHTOFIXES=\\192.168.2.205\it\Update_i386 if not exist %windir%\KB956841.log (%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M) else (echo 已安裝過此程式)
第 4 行的意思是說,在 Windows 的安裝目錄下(%windir% 是系統環境變數) 若不存在KB956841.log這個檔案,則會執行第一個括號內的指令。
反之,當檔案已存在時則會執行else後面括號內的指令。當判斷式成立時,你若不只要執行一個指令時,則可將第 4 行改寫成:
if not exist %windir%\KB956841.log (
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
echo 安裝完成!!請重新開機
) else (
echo 已安裝過此程式)要特別注意括號的位置,例如else前後的括號。
舉例供你參考,若有疑問可以再討論。
2008-11-17 09:08:45補充要刪除含有資料的資料夾只要下一個指令即可:
rd $1234567890 /S /Q
/S : 除了目錄本身之外,一併移除指定目錄裡的所有目錄和檔案。
/Q : 安靜模式,有使用 /S 時,刪除目錄樹結構不再要求確認
rd $1234567890 /S /Q
/S : 除了目錄本身之外,一併移除指定目錄裡的所有目錄和檔案。
/Q : 安靜模式,有使用 /S 時,刪除目錄樹結構不再要求確認
如何寫出判斷的批次檔
***回答已移除***
9人
這樣寫會更容易理解
@echo off
setlocal
set PATHTOFIXES=\\192.168.2.205\it\Update_i386
If EXIST %windows%\KB956841.log goto JUMPA
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
goto END
:JUMPA
:END
假如 %windows%\KB956841.log windows目錄下存在 KB956841.log 這個檔案的話,就跳到 :JUMPA 這行
也就是,如果它找不到KB956841.log 這個檔案,就執行下行,即 執行
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
第二個問題:想要寫一個批次檔是刪掉資料夾且裡面有資料,但要刪的名稱是有「$」開頭的資料夾
要刪目錄,先要清空目錄裡的檔案(以前DOS有工具,可以直接刪掉目錄),可能無法單存的用批次檔來完成,主要是DOS命令或批次檔無法過濾出只有目錄名稱的文字檔,它會包含有目錄裡的其他資訊。縱使可以,也無法循序的讀一行處理一行。
首先先建一個含有 $開頭的資料夾的文字檔
DIR $*.* | FIND "$" > A1.txt
這個命令是將目錄中含有$子目錄的目錄,經由 FIND 過濾器,只將含有$字元目錄送到新建的A1.TXT 檔案裡面。
說明:
> 代表新建一個檔案
>> 代表附加到一個檔案
| 是 鍵盤 \上面那個記號,是管道的意思
打開 A1.TXT 你會發現只要目錄開頭含有$的目錄,均會被過濾出來,但是裡面也涵蓋了其他資料。
問題在這裡,我們要刪除目錄裡的全部檔案及拆掉目錄,目錄均不能用$*.* 來表示,也就是說 DEL $*.*\*.* 這個命令不會被執行,DEL $*.* 則會DEL $*.* 這些檔案,而非這些目錄。
如果寫一隻小程式,處理 A1.TXT 讓它只剩下含$的目錄名稱如A2.txt
接下來,再由隻種程式,以循序檔方式讀取A2.TXT,產生一個目錄一句批次檔命令
DEL $XX1 /s/Q
RD $XX1 /S/Q
DEL $XX2/s/Q
RD $XX1/S/Q
如果 $XX1目錄裡面還有子目錄, /S/Q DEL仍可刪除 /S/Q RD仍可拆除
@echo off
setlocal
set PATHTOFIXES=\\192.168.2.205\it\Update_i386
If EXIST %windows%\KB956841.log goto JUMPA
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
goto END
:JUMPA
:END
假如 %windows%\KB956841.log windows目錄下存在 KB956841.log 這個檔案的話,就跳到 :JUMPA 這行
也就是,如果它找不到KB956841.log 這個檔案,就執行下行,即 執行
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
第二個問題:想要寫一個批次檔是刪掉資料夾且裡面有資料,但要刪的名稱是有「$」開頭的資料夾
要刪目錄,先要清空目錄裡的檔案(以前DOS有工具,可以直接刪掉目錄),可能無法單存的用批次檔來完成,主要是DOS命令或批次檔無法過濾出只有目錄名稱的文字檔,它會包含有目錄裡的其他資訊。縱使可以,也無法循序的讀一行處理一行。
首先先建一個含有 $開頭的資料夾的文字檔
DIR $*.* | FIND "$" > A1.txt
這個命令是將目錄中含有$子目錄的目錄,經由 FIND 過濾器,只將含有$字元目錄送到新建的A1.TXT 檔案裡面。
說明:
> 代表新建一個檔案
>> 代表附加到一個檔案
| 是 鍵盤 \上面那個記號,是管道的意思
打開 A1.TXT 你會發現只要目錄開頭含有$的目錄,均會被過濾出來,但是裡面也涵蓋了其他資料。
問題在這裡,我們要刪除目錄裡的全部檔案及拆掉目錄,目錄均不能用$*.* 來表示,也就是說 DEL $*.*\*.* 這個命令不會被執行,DEL $*.* 則會DEL $*.* 這些檔案,而非這些目錄。
如果寫一隻小程式,處理 A1.TXT 讓它只剩下含$的目錄名稱如A2.txt
接下來,再由隻種程式,以循序檔方式讀取A2.TXT,產生一個目錄一句批次檔命令
DEL $XX1 /s/Q
RD $XX1 /S/Q
DEL $XX2/s/Q
RD $XX1/S/Q
如果 $XX1目錄裡面還有子目錄, /S/Q DEL仍可刪除 /S/Q RD仍可拆除
@echo off
setlocal
set PATHTOFIXES=\\192.168.2.205\it\Update_i386
If EXIST %windows%\KB956841.log goto JUMPA
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
:JUMPA
這樣就可以了!! XD於 2008-11-17 02:41:21 補充
setlocal
set PATHTOFIXES=\\192.168.2.205\it\Update_i386
If EXIST %windows%\KB956841.log goto JUMPA
%PATHTOFIXES%\WindowsServer2003-KB914961-SP2-x86-ENU.exe /Z /M
:JUMPA
這樣就可以了!! XD於 2008-11-17 02:41:21 補充
回應 :
請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數
▼ ADVERTISEMENT ▼
-
‧
-
‧
-
‧
相關問答
- Mircosoft Windows VISTA.或Microsoft Windows services 2008.
- WPF(Windows Presentation Foundation)
- 如何用 Windows Live Mail 收 Exchange Server的郵件 ?
- 誰有用Windows 2003 printer server 做NLB功能??
- 請問Windows XP Professional x64?
- Windows 7將提前於2009年發佈
- Windows XP SP3又要延期了
- MIS必備工具Windows Sysinternals Suite
- Windows當機時的藍畫面,錯誤碼對照表(3)
- Windows當機時的藍畫面,錯誤碼對照表(2)
- Windows當機時的藍畫面,錯誤碼對照表(1)
- Windows XP SP3上市及後續動作
- Windows XP SP3 繁體中文版有得下載了嗎?
- windows storage server 2003 R2如何做到遠端備援?
- WINDOWS下有何路由管理工具?
- 微軟Windows Vista SP1上市發表會-搞清楚.弄明白VISTA的愛恨情仇!!
- 想要從Windows遠端桌面連到Ubuntu上,辦得到嗎?
- 想要改吃蘋果,請問從Windows換到Mac要注意什麼問題
- Windows 2003遠端桌面接管原有的工作中視窗
- HP PhotoSmart C4380驅動程式無法安裝在Windows 2000 Professional SP4










