[程式小功能]依照檔案名稱建立資料夾並歸檔

--

Photo by Omid Kashmari on Unsplash
目錄
1.動機
2.操作說明
2.1檔案分類的原則: 找到他們的規則性
2.2選擇一個工具 : Windows批次檔batch(.bat)
2.3程式流程
2.4製作bat檔案
2.5bat程式撰寫(依照流程逐步)
2.6完整程式碼
3.展示

動機

有些時候檔案散落在資料夾時,就需要一個方便的小工具,讓他們去到該去的地方,分類好一目了然,那這個方法非常適合有這樣需求的人,快速、簡單、好上手。

操作說明

檔案分類的原則: 找到他們的規則性

藉由檔案名稱、建立時間、或是檔案大小、檔案格式副檔名…等,各種不同的方式來做分類的依據,所以先要做的第一步是觀察檔案的各種細項,去找出一個規則,我這裡遇到的是,檔案名稱是有一個規則存在的,那我就依照檔案名稱去做分類吧~

舉例四個檔案名稱為 : AAA_1、AAA_2、B_1、B_2

這四個檔案名稱,我想要以底線前面的字串當作依據,因此分好的結果呈現兩個資料夾,分別是

  • AAA 資料夾: 裡面有兩個資料 AAA_1、AAA_2
  • B 資料夾: 裡面也有兩個資料 B_1、B_2

選擇一個工具 : Windows批次檔batch(.bat)

我覺得他就像一個方便的手稿,通常會將想要偷懶的重複的工作項目以bat 檔案進行,把需要的指令寫在上面,點開執行後就可以省取很多手動的功夫,加上它是指另也不需要特別安裝環境,所以很方便。

相關介紹可以參考:

這裡就以Windows批次檔batch進行接下來的分類

程式流程

  1. 掃描資料夾檔案名稱
  2. 找出目標的副檔名(這裡試著找png檔案)
  3. 將檔案名稱字串存入txt檔案當中
  4. 讀取txt檔案
  5. 依據txt檔案分割底線建立資料夾(這裡要建立的是AAA和B兩個資料夾)
  6. 移動檔案到對應的資料夾(把AAA_1和AAA_2放入AAA、把B_1和B_2放入B資料夾)
  7. 刪除生成的txt檔案(因為不會用到了)

製作bat檔案

我是先開一個txt文字編輯檔案,把需要的語法寫在上面,接下來再把附檔名更改為.bat即可

bat程式撰寫(依照流程逐步)

  1. 掃描資料夾檔案名稱
REM 列出檔案名稱,依照檔名排序---------
dir /b /on > list.txt

2. 找出目標的副檔名(這裡試著找png檔案)

REM 找出png 檔案
findstr ".png" list.txt > target.txt

3. 將檔案名稱字串存入txt檔案當中

rem 刪除副檔名-------------------------
@echo off&setlocal enabledelayedexpansion
rem 讀取target.txt所有內容
for /f "eol=* tokens=*" %%i in (target.txt) do (
rem 設定變數a為每行內容
set a=%%i
rem 如果該行有.png,則將其改為
set "a=!a:.png=!"
rem 把修改後的全部行存入$
echo !a!>>$)
rem 用$的內容替換原來a.txt內容
move $ target.txt

4. 讀取txt檔案

for /f "eol=* tokens=*" %%i in (target.txt) do (
set string=%%i
echo "%%i"

5. 依據txt檔案分割底線建立資料夾(這裡要建立的是AAA和B兩個資料夾)

for /f "tokens=1,2 delims=_" %%a in ("%%i") do (
set BEFORE_UNDERSCORE=%%a
set AFTER_UNDERSCORE=%%b

echo %%a
md %%a

6. 移動檔案到對應的資料夾(把AAA_1和AAA_2放入AAA、把B_1和B_2放入B資料夾)

rem 移動檔案到資料夾  
move %%i*.* %%a

7. 刪除生成的txt檔案(因為不會用到了)

del list.txt
del target.txt

完整程式碼

展示

❤️感恩看到這裡的你,希望這篇文章有幫上你👏歡迎拍手給我鼓勵,我是甜不辣馬拉松,我們下次見

--

--