Re: [請問] 批次語法取得隨身碟代號

看板EZsoft (小軟體)作者 (Newclicker)時間13年前 (2013/01/14 12:27), 編輯推噓5(509)
留言14則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《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)

01/14 12:59, , 1F
高手!
01/14 12:59, 1F

01/14 19:58, , 2F
為什麼不寫成一個BAT檔,要分三個
01/14 19:58, 2F

01/14 20:18, , 3F
可讀性比較高吧
01/14 20:18, 3F

01/14 21:11, , 4F
bat 不是在寫程式啊XD
01/14 21:11, 4F

01/14 22:44, , 5F
就算是script也是要顧及到維護吧030
01/14 22:44, 5F
板友果然內行,就是因為是寫批次檔,所以要注意降低維護的門檻 (目標就是要讓不會寫程式的使用者都能夠輕易修改) 通通寫在一個檔案裡面,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)

01/16 00:51, , 6F
%~d0 不就能取得了嗎
01/16 00:51, 6F

01/16 00:51, , 7F
建立一個.bat 裡面寫echo %~d0看看 應該會回傳D:
01/16 00:51, 7F

01/16 00:52, , 8F
輸入%~dp0可以取得整個資料夾路徑
01/16 00:52, 8F

01/16 00:53, , 9F
01/16 00:53, 9F

01/16 10:43, , 10F
他現在主要是解決隨身碟在不同電腦可能有不同代號的問題啊@@
01/16 10:43, 10F

01/16 23:32, , 11F
你批次檔總會放到隨身碟裡吧 直接從隨身碟裡執行批次檔
01/16 23:32, 11F

01/16 23:32, , 12F
去取得%0就能取得批次檔路徑阿....
01/16 23:32, 12F

01/17 00:11, , 13F
恩很好 我都一直把這當作一定要放在電腦上的XDD
01/17 00:11, 13F

01/17 00:11, , 14F
忘了也可以丟隨身碟理XDDD
01/17 00:11, 14F
文章代碼(AID): #1Gyub4CZ (EZsoft)
討論串 (同標題文章)
文章代碼(AID): #1Gyub4CZ (EZsoft)