用AutoHotkey修改U盘的盘符
固定U盘盘符(用靠后的字母),电脑新增了硬盘也不用担心U盘盘符被占用。
我是用U盘进行文件夹同步的,所以U盘盘符不能变动。
以下是AutoHotkey v2 beta版代码
beforeSync(drvUsb := "o") {
;确认插入U盘
_usb := DriveGetList("REMOVABLE")
if !strlen(_usb) { ;没插入U盘
tooltip("请插入U盘")
while(DriveGetList("REMOVABLE") == "")
sleep(1000)
}
tooltip("确认U盘盘符")
usbOld := DriveGetList("REMOVABLE")
if (usbOld ~= "^[A-Z]$" && usbOld != drvUsb)
USBLabel(usbOld, drvUsb)
tooltip()
;同步前处理
; 更新U盘配置文件
fp := "d:\TC\hy\FreeFileSync\hy.ffs_gui"
syncFile([fp], [drvUsb . substr(fp, 2)])
; 退出TC
if (ProcessExist("TOTALCMD64.EXE") || ProcessExist("TOTALCMD.EXE")) {
if WinExist("ahk_class TTOTAL_CMD")
PostMessage(1075, 24340)
else {
WinShow("ahk_class TTOTAL_CMD")
WinWait("ahk_class TTOTAL_CMD")
PostMessage(1075, 24340)
}
}
return fp
;用 AutoHotkey 同步文件(依据为文件修改日期)
syncFile(arrFp0, arrFp1) {
for k, fp0 in arrFp0 {
fp1 := arrFp1[k]
t0 := FileGetTime(fp0)
t1 := FileGetTime(fp1)
if (t0 > t1)
FileCopy(fp0, fp1, 1)
else if (t0 < t1)
FileCopy(fp1, fp0, 1)
}
}
USBLabel(oldLabel, newLabel:="O") { ;修改U盘卷标
fp := format("c:\{1}.txt", A_Now)
FileAppend(format("select volume {1}`nassign letter={2}", oldLabel,newLabel), fp)
tooltip(format("盘符修改中:{1}→{2}",oldLabel,newLabel),,, 15)
RunWait(format("diskpart /s {1}", fp).toCmd())
SetTimer(tooltip.bind(,,, 15), -1000)
FileDelete(fp)
}
}