Re: [請問] 自動建立資料夾歸檔軟體
用 AutoHotKey 寫出來了一半的功能,
可以完整的複製所需的檔案到指定資料夾,
而且可以使用 萬用字元(*) 和 Regular Expression 唷~~
不過不包括指定資料夾的子資料夾,這個功能可以參考官方網頁範例:
http://www.autohotkey.com/docs/commands/FileMove.htm
在 Examples:
; The following example moves all files and folders
inside a folder to a different folder
目前還不會寫自動依檔名建立資料夾的程式碼,
這個 AutoHotKey 理論上應該可以寫得出來,不過我還在摸索中。
════════════════════════════════════
例如說我想要將 D:\111 的檔案 *000*.txt 移動到 D:\222
這個程式有四個變數:
sourceFolder: 指定要搜尋的資料夾,這裡是 D:\111。
targetFolder: 指定目標資料夾 ,這裡是 D:\222。
fileName: 要搜尋的檔案名稱 ,這裡是 *000*.txt。
workPath: 搜尋的完整路經 ,這裡是 D:\111\*000*.txt。
所用的指令有:
FileSelectFolder:讓使用者指定資料夾。
InputBox: 讓使用者輸入文字,例如 *000*.txt。
FileMove: 移動檔案到指定資料夾。
════════════════════════════════════
程式碼如下:
#q::
;出現視窗讓使用者指定資料夾,指定的位置會存放至 FileSelectFolder 變數中。
FileSelectFolder , sourceFolder, ,, 選擇要搜尋的資料夾
Loop ;重複不斷執行下面的 {...}
{
FileSelectFolder , targetFolder, ,3, 選擇目標資料夾
MsgBox , 目標資料夾: %targetFolder%
InputBox , fileName,
,請輸入 %sourceFolder% 中要移動的檔案名稱(例如: *123*.jpg)
,,300,200,,,,
;請將上面三行合併成一行
;InputBox讓使用者輸入要移動的檔名。
;輸入的文字會被放在 fileName 變數中。
workPath = %sourceFolder%\%fileName%
;建立一個新變數 workPath,
;內容是 sourceFolder 的內容加上一個反斜線(\)再加上 fileName 的內容,
;中間不能有空格。
MsgBox , 將要移動 %workPath% 到 %targetFolder%
FileMove , %workPath%, %targetFolder%
;移動檔案,從 workPath,到 targetFolder
MsgBox , 4 ,, 要繼續從 %sourceFolder% 移動其他檔案嗎?
IfMsgBox , No ;如果使用者按下 "否",則執行 {...}
{
MsgBox , 離開程式
break ;離開 Loop {...}
}
}
return
════════════════════════════════════
FileSeleceFolder , 變數名稱 , 顯示的位置 , 參數 , 說明文字
出現一個視窗讓使用者指定資料夾。
http://www.autohotkey.com/docs/commands/FileSelectFolder.htm
變數名稱: 會將使用者選擇的資料夾位置放到這個變數中。
顯示的位置: 一開始出現所顯示的位置,例如: C:\ 。
說明文字: 要顯示的文字。
參數:
╭─────┬──────────────╮
│ 參數名稱 │ 功能 │
├─────┼──────────────┤
│ 0 │ 什麼功能都沒有 │
├─────┼──────────────┤
│ 1 │ 允許 使用者建立新資料夾 │
├─────┼──────────────┤
│ 2 │ 0 的功能多了輸入文字視窗 │
├─────┼──────────────┤
│ 3 │ 1 的功能多了輸入文字視窗 │
╰─────┴──────────────╯
FileMove , 來源資料夾 , 目標資料夾 , 參數
移動來源資料夾下的檔案到目標資料夾。
http://www.autohotkey.com/docs/commands/FileMove.htm
參數:
╭───┬───────────╮
│ 參數 │ 用途 │
├───┼───────────┤
│ 0 │ 不取代已經存在的檔案 │
├───┼───────────┤
│ 1 │ 取代已經存在的檔案 │
├───┼───────────┤
│ 沒寫 │ 與 0 相同 │
╰───┴───────────╯
範例:
FileMove , C:\001 , D:\002
移動 C:\001 所有檔案到 D:\002
FileMove , C:\123.txt , D:\_123.txt
移動 C:\123.txt 到 D:\ 並且更名為 _123.txt
FileMove , C:\*.txt , D:\temp
移動 C:\ 下所有 txt 檔案到 D:\temp
FileMove , C:\111\*.txt , D:\222\*.bkt
移動 C:\111 下所有 txt 檔到 D:\222 並更改副檔名為 bkt
※ 引述《lianteh (ms!)》之銘言:
: 請教各位大大,我遇到的問題如下:
: 我有很多由一群數字組合成的檔名的檔案放在同樣的一層目錄,例如 D:\
: 1_1_1_1 - 20080807.a, 1_1_1_1 - 20080807.b, 1_1_1_1 - 20080807.c
: 1_1_1_1 - 20080808.a, 1_1_1_1 - 20080808.b, 1_1_1_1 - 20080808.c
: 1_1_1_2 - 20080807.a, 1_1_1_2 - 20080807.b, 1_1_1_2 - 20080807.c
: 1_1_1_2 - 20080808.a, 1_1_1_2 - 20080808.b, 1_1_1_2 - 20080808.c,
: 今想要把
: 1_1_1_1 - 20080807.a, 1_1_1_1 - 20080807.b, 1_1_1_1 - 20080807.c 和
: 1_1_1_1 - 20080808.a, 1_1_1_1 - 20080808.b, 1_1_1_1 - 20080808.c
: 一同放在D:\1_1_1_1\ 裡面
: 1_1_1_2 - 20080807.a, 1_1_1_2 - 20080807.b, 1_1_1_2 - 20080807.c 和
: 1_1_1_2 - 20080808.a, 1_1_1_2 - 20080808.b, 1_1_1_2 - 20080808.c
: 一同放在D:\1_1_1_2\ 裡面
: 需要做的事情就是:用index建立資料夾 -> 移動檔案
: 請問有沒有有效率的cmd或者小軟體可以做到這件事情? 感謝 ^^
: ※ 編輯: lianteh 來自: 220.130.36.18 (08/06 22:12)
: ※ lianteh:轉錄至看板 EZsoft 08/06 22:13
--
戰略高手 遊戲, 數位, 程設 [jzs/lostname
DigitalWare 軟體 Σ軟體 應用 技巧 [lostname]
EzHotKey 軟體 ◎簡化複雜工作的快速鍵軟體 VElysian
EzHotKey 主要討論一種可以把複雜的滑鼠鍵盤動作變成簡單的快速鍵的軟體。
例如: 重複的剪下貼上,或是將滑鼠調整音量的動作簡化成只按 +/- 鍵。
包括: AutoHotKey、AutoIt、EZScript、VBScript、Windows 批次檔。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.175.180
※ 編輯: VElysian 來自: 61.64.175.180 (08/10 16:40)
推
08/11 09:56, , 1F
08/11 09:56, 1F
※ 編輯: VElysian 來自: 61.62.73.172 (08/11 17:02)
※ 編輯: VElysian 來自: 61.62.73.172 (08/12 01:54)
討論串 (同標題文章)
EzHotKey 近期熱門文章
PTT數位生活區 即時熱門文章