@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 補充
最佳解答(網友推薦)
21人
你可以使用下列判斷方式:
第 4 行的意思是說,在 Windows 的安裝目錄下(%windir% 是系統環境變數) 若不存在KB956841.log這個檔案,則會執行第一個括號內的指令。
反之,當檔案已存在時則會執行else後面括號內的指令。當判斷式成立時,你若不只要執行一個指令時,則可將第 4 行改寫成:
要特別注意括號的位置,例如else前後的括號。
舉例供你參考,若有疑問可以再討論。
@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 時,刪除目錄樹結構不再要求確認
如何寫出判斷的批次檔
10人
這樣寫會更容易理解
@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 ▼
廠商來幫忙
邦友收藏動態
- 常用網路管理工具 Getif (Get Interfaces)教學 (kaiin323)
- 5 本超優免費的自學 Linux 電子書 (scottchen)
- 6款Windows平臺免費備份工具 (tomtom123)
- 關於Cisco、linux、MySQL、Oracle、unix一些命令手冊 (fran633)
- 穩定的感覺會咬人 (heero1219248)
- 化繁為簡的工作拆解手法 (brgodman)
- 用群組原則輕鬆管理使用者電腦 (raytracy)
- 系統分析師必須思考的8個問題 (arnolin)
- 關於CCNA一些自我學習資料大全~! (51pass)
- 10 個不可或缺的 Linux/Unix 指令速查表 (scottchen)
安裝「收藏快捷鍵」,可以讓邦友直接透過Google工具列上的按扭,快速收藏站內、站外的網頁。
相關問答
- Windows Installer 4.5 Redistributable
- Ubuntu 9.04 vs. Ubuntu 9.10 vs Windows Vista vs Windows 7
- 請問如何分辨Windows R2版本
- 互動網站之 由小綠人引入的Windows Live Spaces
- windows+cacti+syslog+mysql這組合要如何實現??
- Windows Server 2003 Terminal Services 問與答
- Windows server 2008 加入網域之後,卻無法 ping 到此台Windows server 2008
- 英特爾為Windows 7站台背書 明年導入
- Windows Server 2003改裝為個人操作系統方法
- windows syslog server
- Microsoft決算、Windows 7好調で過去最高
- 編輯觀點:還是來期待Windows 8吧…
- 可以在 40 G 的 USB HD 上安裝 Windows 7 嗎?
- Windows 的Terminal Server
- 有什麼軟體可以測試windows系統的穩定度
- Windows 如何擴充主系統硬碟空間?
- Autoruns for Windows v9.57
- Windows Server 2003無法登出也無法重新啟動或關機
- 史上第一回『Mac與Windows共用』之自動送紙掃描器
- 怎麼使用Windows Azure







