用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)
    }
}
posted @ 2020-04-02 11:06  火冷  阅读(543)  评论(0编辑  收藏  举报