※ 本文為 cuteman0725 轉寄自 ptt.cc 更新時間: 2013-01-21 01:08:04
看板 EZsoft
作者 標題 Re: 4、批次語法取得隨身碟代號
時間 Mon Jan 14 12:27:42 2013
※ 引述《mlev (大地彩妝師)》之銘言:
: 想要寫個批次檔將檔案備份到隨身碟
: 但隨身碟代號會因插在不同電腦而不同
: 因此想求問
: 有什麼方法可以取得隨身碟代號呢?
首先在你的隨身碟上面建立一個檔案 例如 usbdsk.flg
這樣在不同電腦間就不用煩惱隨身碟代號會不同
這邊為了方便modified各種功能,利用三個批次檔達成
AutoSearch.bat用來自動搜尋windows所有可能的磁碟機代號
checku.bat 用來確認是否存在usbdsk.flg這個檔案,並將隨身碟代號變數設為%upan%
func1.bat 執行你要的功能
寫完你要的func1.bat,
以後只要執行Autosearch.bat就可以完成你要的備份或其他功能
AutoSearch.bat
@echo off
for %%i in (z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c) do call
checku.bat %%i
rem (以上從 for 到 %%i 為同一行)
rem 用來自動搜尋windows所有可能的磁碟機代號
checku.bat
@echo off
set upan=
if not exist %1:\usbdsk.flg goto ext >nul 2>nul
set upan=%1
func1.bat
:ext
rem 用來確認是否存在usbdsk.flg這個檔案
rem 並將隨身碟代號變數設為%upan%
func1.bat (內容為你要的功能,例如把C:\temp 備份到隨身碟:\temp)
@echo off
rem 執行你要的功能
copy c:\temp %upan%:\temp\
--
女子徵友網 要帥 有車|████ █████████▕搜尋▏進階搜尋 | 使用偏好
▇▇  ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄
所有網頁 約有 1項符合要帥 有車的查詢結果,以下是第 1項。 共費0.01秒。
您是不是要找: 象棋 φtaipingeric
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.34.163.231
※ 編輯: newclicker 來自: 1.34.163.231 (01/14 12:47)
→ :高手!1F 01/14 12:59
推 :為什麼不寫成一個BAT檔,要分三個2F 01/14 19:58
→ :可讀性比較高吧3F 01/14 20:18
→ :bat 不是在寫程式啊XD4F 01/14 21:11
推 :就算是script也是要顧及到維護吧0305F 01/14 22:44
板友果然內行,就是因為是寫批次檔,所以要注意降低維護的門檻(目標就是要讓不會寫程式的使用者都能夠輕易修改)
通通寫在一個檔案裡面,goto來goto去的,個人不太喜歡
就算寫出能夠彰顯自己功力,但卻讓大家難以修改/客製化的程式
這樣的程式碼等於一出生就宣告死亡,因為除了作者之外不會有人想幫忙改版
還不如寫出能讓小學生能看得懂並能簡單修改的程式碼更讓人覺得有成就感
之所以分成這三個檔案代表最常需要客製化的三個環節
AutoSearch.bat大致上沒有修改的必要(如果要加上軟碟機,那就把a,b加上去)
checku.bat單獨出來,這樣使用者如果希望把usbdsk.flg改成其他五花八門的名字,
就只要修改這個檔案就好。
另外更進階的用法是,利用不同的名字,可以做到不同隨身碟之間的備份與同步
而不會受到換了別台電腦就搞不清楚哪一個磁碟是來源,哪一個磁碟是目的
ex.來源隨身碟就放個uSource.flg,目的隨身碟就放個uBackup.flg
來源硬碟1 就放個h1Sourc.flg,來源硬碟2 就放個h2Sourc.flg
func1.bat
func2.bat
........ 這樣子分的原因是考慮到後續工作可簡單可複雜,比如說有同步檔案需求的話
前後步驟就會有其依存性關聯,同一個檔案內goto來來去去
再加上多重來源多重目的之間的備份和同步,絕對會讓想修改的人翻桌
再來如果考慮到可以搭配開放源碼的FreeFileSync命令列功能(好用),
這樣子分開寫不但清楚,備份、比對、同步功能也就可以好好發揮。
當然我不認為我的解法就是最好的,有其他構想的人自然是很歡迎一起討論。
※ newclicker:轉錄至看板 EzHotKey 01/15 03:20
※ 編輯: newclicker 來自: 1.34.163.231 (01/15 14:26)
推 :%~d0 不就能取得了嗎6F 01/16 00:51
→ :建立一個.bat 裡面寫echo %~d0看看 應該會回傳D:
→ :輸入%~dp0可以取得整個資料夾路徑
→ : http://tinyurl.com/qlzauj 參考資料
→ :建立一個.bat 裡面寫echo %~d0看看 應該會回傳D:
→ :輸入%~dp0可以取得整個資料夾路徑
→ : http://tinyurl.com/qlzauj 參考資料
推 :他現在主要是解決隨身碟在不同電腦可能有不同代號的問題啊@@10F 01/16 10:43
→ :你批次檔總會放到隨身碟裡吧 直接從隨身碟裡執行批次檔11F 01/16 23:32
→ :去取得%0就能取得批次檔路徑阿....
→ :去取得%0就能取得批次檔路徑阿....
推 :恩很好 我都一直把這當作一定要放在電腦上的XDD13F 01/17 00:11
→ :忘了也可以丟隨身碟理XDDD
→ :忘了也可以丟隨身碟理XDDD
--
※ 看板: P_qman 文章推薦值: 0 目前人氣: 0 累積人氣: 238
回列表(←)
分享