# AI 自動化實戰:用 Gemini CLI 提升你的電腦操作效率
> Build with AI|Workshop #2 :用 Gemini CLI 打造 AI Downloads 管理助手
---
Google Cloud credit : https://trygcp.dev/claim/bwai26-gdgoc-ntpu-may26
---
## 一、課程介紹
在日常使用電腦時,Downloads 資料夾通常會累積大量檔案,例如 PDF、圖片、壓縮檔、程式碼、截圖、文件或影片。這些檔案如果長時間沒有整理,會讓搜尋與管理變得困難。
本課程將使用 Gemini CLI 建立一個 Downloads 管理助手,讓 AI 協助分析資料夾內容、分類檔案、建立資料夾、移動檔案,並輸出整理報告。
課程重點包含:
- CLI 是什麼
- Gemini CLI 是什麼
- AI Agent 是什麼
- 如何安裝 Gemini CLI
- 如何讓 Gemini CLI 操作本機資料夾
- 如何設計一個 Downloads 整理流程
- 如何安全地使用 AI 操作電腦
---
## 二、CLI 是什麼?
### 2.1 CLI 的意思
CLI 是 Command Line Interface,中文通常稱為「命令列介面」或「指令列介面」。
一般使用電腦時,大多數人習慣使用圖形化介面,例如:
- 用滑鼠開資料夾
- 拖曳檔案
- 點選按鈕
- 開啟 App 操作功能
CLI 則是透過文字指令操作電腦,例如:
```bash
ls
```
這個指令可以列出目前資料夾中的檔案。
```bash
mkdir Images
```
這個指令可以建立一個叫做 Images 的資料夾。
```bash
mv a.jpg Images/
```
這個指令可以把 `a.jpg` 移動到 `Images/` 資料夾。
---
### 2.2 GUI 與 CLI 的差異
GUI 是 Graphical User Interface,中文是圖形化使用者介面。
| 操作方式 | 說明 | 範例 |
|---|---|---|
| GUI | 用視覺化介面操作 | Finder、檔案總管、拖拉檔案 |
| CLI | 用文字指令操作 | Terminal、PowerShell、zsh |
GUI 比較直覺,適合一般操作。
CLI 則比較適合:
- 批次處理大量檔案
- 重複性工作
- 自動化流程
- 開發與系統管理
- 將多個工具串接起來
例如,手動整理 100 個檔案可能需要很多時間,但用 CLI 可以透過幾行指令完成。
---
### 2.3 為什麼 AI 搭配 CLI 很有用?
AI 可以理解自然語言,CLI 可以操作電腦。
當兩者結合時,可以形成這樣的流程:
```text
使用者描述需求
→ AI 理解任務
→ AI 選擇適合的操作方式
→ CLI 執行電腦操作
→ 回傳結果
```
例如輸入:
```bash
gemini "幫我整理 Downloads 裡的圖片和 PDF"
```
Gemini CLI 可能會進行:
```text
讀取 Downloads
→ 找出圖片與 PDF
→ 建立分類資料夾
→ 移動檔案
→ 回報整理結果
```
這也是 Gemini CLI 和單純網頁版 AI 最大的差異之一:
它可以和本機環境互動,包含讀取檔案、寫入檔案與執行指令。
---
## 三、AI Agent 是什麼?
### 3.1 AI Agent 的基本概念
AI Agent 可以理解成「能夠根據目標,自行規劃並執行步驟的 AI 系統」。
一般聊天型 AI 比較像是:
```text
使用者問問題
→ AI 回答
```
AI Agent 的流程則更接近:
```text
使用者給任務
→ AI 拆解任務
→ AI 使用工具
→ AI 觀察結果
→ AI 繼續調整
→ 任務完成
```
在 Gemini CLI 中,AI 可以使用工具,例如:
- 讀取檔案
- 寫入檔案
- 執行 shell 指令
- 搜尋文字
- 整理資料
- 產生或修改程式碼
---
### 3.2 ReAct 流程
Gemini CLI 官方文件提到它使用 reason and act,也就是 ReAct 類型的流程。
可以簡化成:
```text
Reason:分析目前要做什麼
Act:執行一個動作
Observe:觀察執行結果
Repeat:根據結果決定下一步
```
舉例來說,當任務是「整理 Downloads」時,流程可能是:
```text
Reason:需要先知道 Downloads 裡有哪些檔案
Act:列出 Downloads 內容
Observe:發現有 PDF、圖片、壓縮檔
Reason:需要建立分類資料夾
Act:建立 PDFs、Images、Archives
Observe:資料夾建立完成
Reason:開始移動檔案
Act:將不同檔案移入對應資料夾
Observe:檔案整理完成
Reason:輸出整理報告
Act:列出統計結果
```
---
### 3.3 本課程中的 Agent 任務
本課程的 Agent 任務是:
```text
整理 Downloads 資料夾
```
但這個任務實際上包含多個子任務:
```text
1. 掃描資料夾
2. 分析檔案類型
3. 建立分類資料夾
4. 移動檔案
5. 找出大檔案
6. 找出可能重複的檔案
7. 輸出報告
```
這種多步驟任務比單純問答更適合 Gemini CLI。
---
## 四、Gemini CLI 是什麼?
### 4.1 基本介紹
Gemini CLI 是 Google 推出的開源 AI Agent 工具,可以讓使用者在終端機中使用 Gemini。
它可以用在:
- 程式碼理解
- 程式碼修改
- 檔案管理
- 任務自動化
- 資料整理
- 指令執行
- 本機工具串接
本課程不會聚焦在寫程式,而是聚焦在「日常電腦操作自動化」。
---
### 4.2 Gemini CLI 和網頁版 Gemini 的差異
| 項目 | 網頁版 Gemini | Gemini CLI |
|---|---|---|
| 使用位置 | 瀏覽器 | Terminal |
| 主要互動方式 | 聊天 | 任務執行 |
| 是否能直接操作本機檔案 | 通常不行 | 可以 |
| 是否能執行指令 | 通常不行 | 可以 |
| 適合用途 | 問答、寫作、整理想法 | 檔案處理、開發、自動化 |
Gemini CLI 的重點在於它可以接觸本機環境,因此適合處理「需要讀取或操作檔案」的任務。
---
### 4.3 本課程會用到的能力
本課程會使用 Gemini CLI 完成以下操作:
- 讀取 Downloads 資料夾內容
- 判斷檔案類型
- 建立分類資料夾
- 移動檔案
- 統計整理結果
- 輸出報告
---
## 五、安裝 Gemini CLI
### 5.1 安裝前準備
Gemini CLI 需要 Node.js 環境。
可以先檢查是否已安裝 Node.js:
```bash
node -v
```
也可以檢查 npm:
```bash
npm -v
```
如果兩個指令都有顯示版本號,代表環境基本上可以使用。
例如:
```bash
node -v
v22.5.1
```
```bash
npm -v
10.8.2
```
---
### 5.2 安裝 Node.js
如果尚未安裝 Node.js,可以到官方網站下載 LTS 版本:
```text
https://nodejs.org/
```
macOS 使用者也可以使用 Homebrew:
```bash
brew install node
```
安裝完成後再次確認:
```bash
node -v
npm -v
```
---
### 5.3 使用 npm 安裝 Gemini CLI
官方提供的 npm 安裝方式:
```bash
npm install -g @google/gemini-cli
```
說明:
```text
npm install:使用 npm 安裝套件
-g:全域安裝,讓終端機任何位置都可以使用
@google/gemini-cli:Gemini CLI 的 npm 套件名稱
```
安裝完成後確認:
```bash
gemini --version
```
或直接執行:
```bash
gemini
```
---
### 5.4 使用 Homebrew 安裝 Gemini CLI
macOS 或 Linux 使用者也可以使用 Homebrew:
```bash
brew install gemini-cli
```
安裝完成後執行:
```bash
gemini
```
---
### 5.5 不安裝,直接使用 npx
如果不想全域安裝,也可以使用 npx:
```bash
npx @google/gemini-cli
```
這種方式適合臨時測試。
---
### 5.6 第一次啟動
執行:
```bash
gemini
```
第一次啟動時,通常會進入初始化流程,可能包含:
- 登入 Google 帳號
- 選擇使用方式
- 設定主題
- 建立基本設定
依照畫面提示完成即可。
---
### 5.7 安裝安全提醒
請使用官方文件提供的安裝方式,尤其注意 npm 套件名稱:
```bash
@google/gemini-cli
```
不要安裝來源不明的套件,也不要複製不明網站提供的終端機指令。
---
## 六、確認 Gemini CLI 是否可用
### 6.1 測試基本對話
啟動 Gemini CLI:
```bash
gemini
```
輸入:
```text
請用一句話介紹 Gemini CLI
```
如果能正常回覆,代表基本功能可用。
---
### 6.2 測試本機資料夾讀取
在 Gemini CLI 中輸入:
```text
列出目前資料夾有哪些檔案
```
也可以直接指定 Downloads:
```text
列出我的 Downloads 資料夾有哪些檔案
```
如果 Gemini CLI 要求確認操作,請先閱讀它準備執行的內容,再決定是否允許。
---
## 七、專案目標:AI Downloads 管理助手
### 7.1 專案說明
本專案要建立一個 Downloads 管理流程。
目標是讓 Gemini CLI 完成:
```text
分析 Downloads
→ 建立分類資料夾
→ 移動檔案
→ 找出大檔案
→ 找出可能重複檔案
→ 輸出整理報告
```
---
### 7.2 預期分類
可以先設定以下分類:
```text
Images:圖片
PDFs:PDF 文件
Documents:文件
Code:程式碼
Videos:影片
Archives:壓縮檔
Others:其他
Large:大型檔案
```
---
### 7.3 常見檔案類型
| 類別 | 副檔名 |
|---|---|
| Images | jpg, jpeg, png, gif, webp |
| PDFs | pdf |
| Documents | doc, docx, ppt, pptx, xls, xlsx, txt, md |
| Code | py, js, html, css, java, cpp, c, swift |
| Videos | mp4, mov, avi, mkv |
| Archives | zip, rar, 7z, tar, gz |
| Others | 無法分類的檔案 |
---
<details>
<summary>Windows 使用者補充:常用指令對照</summary>
本教材主要使用 macOS / Linux 指令。
Windows 使用者建議使用 **PowerShell**,部分指令會和 macOS / Linux 不同。
---
### 常用指令對照
| 功能 | macOS / Linux | Windows PowerShell | Windows cmd |
|---|---|---|---|
| 列出檔案 | `ls` | `ls` 或 `dir` | `dir` |
| 切換到 Downloads | `cd ~/Downloads` | `cd $HOME\Downloads` | `cd %USERPROFILE%\Downloads` |
| 建立資料夾 | `mkdir test_downloads` | `mkdir test_downloads` | `mkdir test_downloads` |
| 建立空檔案 | `touch a.pdf` | `New-Item a.pdf -ItemType File` | `type nul > a.pdf` |
| 移動檔案 | `mv a.pdf PDFs/` | `Move-Item a.pdf PDFs\` | `move a.pdf PDFs\` |
| 查看資料夾內容 | `ls Images` | `ls Images` 或 `dir Images` | `dir Images` |
---
### 建立測試資料夾
macOS / Linux:
```bash
mkdir ~/test_downloads
cd ~/test_downloads
```
Windows PowerShell:
```powershell
mkdir $HOME\test_downloads
cd $HOME\test_downloads
```
Windows cmd:
```cmd
mkdir %USERPROFILE%\test_downloads
cd %USERPROFILE%\test_downloads
```
---
### 建立測試檔案
macOS / Linux:
```bash
touch report.pdf photo.jpg screenshot.png homework.docx app.py website.html movie.mp4 data.zip notes.txt unknown_file.xyz
```
Windows PowerShell:
```powershell
New-Item report.pdf, photo.jpg, screenshot.png, homework.docx, app.py, website.html, movie.mp4, data.zip, notes.txt, unknown_file.xyz -ItemType File
```
Windows cmd:
```cmd
type nul > report.pdf
type nul > photo.jpg
type nul > screenshot.png
type nul > homework.docx
type nul > app.py
type nul > website.html
type nul > movie.mp4
type nul > data.zip
type nul > notes.txt
type nul > unknown_file.xyz
```
---
### 查看檔案
macOS / Linux:
```bash
ls
```
Windows PowerShell:
```powershell
ls
```
或:
```powershell
dir
```
Windows cmd:
```cmd
dir
```
---
### 建立 120MB 大型測試檔案
macOS:
```bash
mkfile 120m big_file.mov
```
Linux:
```bash
dd if=/dev/zero of=big_file.mov bs=1M count=120
```
Windows PowerShell / cmd:
```powershell
fsutil file createnew big_file.mov 125829120
```
`125829120 bytes` 約等於 `120 MB`。
</details>
---
## 八、建立測試資料夾與假資料
### 8.1 建立測試資料夾
macOS / Linux:
```bash
mkdir ~/test_downloads
cd ~/test_downloads
```
Windows PowerShell:
```powershell
mkdir $HOME\test_downloads
cd $HOME\test_downloads
```
---
### 8.2 建立假資料
假資料是一些空檔案,用來模擬 Downloads 裡常見的檔案類型,例如 PDF、圖片、文件、程式碼、影片與壓縮檔。
macOS / Linux:
```bash
touch report.pdf photo.jpg screenshot.png homework.docx app.py website.html movie.mp4 data.zip notes.txt unknown_file.xyz
```
Windows PowerShell:
```powershell
New-Item report.pdf, photo.jpg, screenshot.png, homework.docx, app.py, website.html, movie.mp4, data.zip, notes.txt, unknown_file.xyz -ItemType File
```
---
### 8.3 查看假資料
macOS / Linux:
```bash
ls
```
Windows PowerShell:
```powershell
dir
```
---
## 九、基礎操作練習
### 9.1 讀取資料夾內容
在 `~/test_downloads` 中執行:
```bash
gemini
```
輸入:
```text
列出目前資料夾中的檔案,並依副檔名整理成表格
```
這個練習的目標是讓 Gemini CLI 讀取資料夾內容,並將檔案依類型整理。
---
### 9.2 分析檔案類型
輸入:
```text
分析目前資料夾中的檔案類型,告訴我哪些是圖片、文件、程式碼、影片、壓縮檔與其他類型
```
預期輸出會包含類似:
```text
圖片:photo.jpg, screenshot.png
文件:report.pdf, homework.docx, notes.txt
程式碼:app.py, website.html
影片:movie.mp4
壓縮檔:data.zip
其他:unknown_file.xyz
```
---
### 9.3 建立分類資料夾
輸入:
```text
請在目前資料夾建立以下分類資料夾:Images、PDFs、Documents、Code、Videos、Archives、Others
```
完成後可以查看:
mac
```bash
ls
```
windows
```powershell
dir
```
---
### 9.4 移動圖片檔案
輸入:
```text
請將目前資料夾中的圖片檔案移動到 Images 資料夾
```
完成後檢查:
mac
```bash
ls Images
```
windows
```powershell
dir Images
```
---
### 9.5 移動 PDF 檔案
輸入:
```text
請將目前資料夾中的 PDF 檔案移動到 PDFs 資料夾
```
完成後檢查:
mac
```bash
ls PDFs
```
windows
```powershell
dir PDFs
```
---
## 十、主專案實作:整理 Downloads 測試資料夾
### 10.1 完整任務指令
在 `~/test_downloads` 中輸入:
```text
請幫我整理目前資料夾,完成以下任務:
1. 分析目前資料夾中的檔案類型
2. 建立分類資料夾:
- Images
- PDFs
- Documents
- Code
- Videos
- Archives
- Others
3. 根據副檔名將檔案移動到對應資料夾
4. 不要移動已經在分類資料夾內的檔案
5. 整理完成後,列出每個分類資料夾中的檔案數量
6. 最後輸出一份整理報告
```
---
### 10.2 任務拆解
這段 prompt 包含:
```text
分析範圍:目前資料夾
分類規則:依副檔名
操作目標:移動檔案
限制條件:不重複移動分類資料夾內的檔案
輸出要求:統計與整理報告
```
---
### 10.3 預期結果
整理完成後,資料夾可能變成:
```text
test_downloads/
├── Images/
│ ├── photo.jpg
│ └── screenshot.png
├── PDFs/
│ └── report.pdf
├── Documents/
│ ├── homework.docx
│ └── notes.txt
├── Code/
│ ├── app.py
│ └── website.html
├── Videos/
│ └── movie.mp4
├── Archives/
│ └── data.zip
└── Others/
└── unknown_file.xyz
```
---
## 十一、加入進階條件
### 11.1 找出大型檔案
可以加入大小條件:
```text
請找出目前資料夾中最大的 3 個檔案,列出檔名與大小,但不要移動它們
```
---
### 11.2 建立 Large 分類
```text
請將超過 100MB 的檔案移動到 Large 資料夾,並保留原本檔案類型的統計資訊
```
如果測試資料夾沒有大檔案,可以先建立測試用大檔:
macOS / Linux:
```bash
mkfile 120m big_file.mov
```
或:
```bash
dd if=/dev/zero of=big_file.mov bs=1M count=120
```
---
### 11.3 找出可能重複檔案
```text
請找出目前資料夾中可能重複的檔案,只列出清單,不要刪除
```
常見判斷方式:
```text
檔名相似
檔案大小相同
副檔名相同
內容 hash 相同
```
初學階段建議先列出可疑清單,不要自動刪除。
---
## 十二、加入輸出格式控制
### 12.1 為什麼需要控制輸出格式?
如果只是輸入:
```text
整理 Downloads
```
Gemini CLI 可能會回覆很自由的格式。
如果希望結果更容易閱讀,可以明確要求格式。
---
### 12.2 表格輸出
```text
整理完成後,請用 Markdown 表格輸出結果,欄位包含:
分類、檔案數量、代表檔案
```
預期格式:
```markdown
| 分類 | 檔案數量 | 代表檔案 |
|---|---:|---|
| Images | 2 | photo.jpg, screenshot.png |
| PDFs | 1 | report.pdf |
| Code | 2 | app.py, website.html |
```
---
### 12.3 JSON 輸出
如果要讓結果可以交給其他程式處理,可以要求 JSON:
```text
整理完成後,請用 JSON 輸出結果,格式如下:
{
"summary": {
"Images": 0,
"PDFs": 0,
"Documents": 0,
"Code": 0,
"Videos": 0,
"Archives": 0,
"Others": 0
},
"large_files": [],
"possible_duplicates": []
}
```
---
## 十三、安全操作原則
### 13.1 限制操作範圍
建議一開始只操作:
```text
~/test_downloads
```
熟悉後再改成:
```text
~/Downloads
```
---
### 13.2 避免高風險指令
避免使用:
```bash
sudo
rm -rf
```
原因:
```text
sudo:提高系統權限,可能影響系統檔案
rm -rf:遞迴刪除,容易造成不可逆資料損失
```
---
### 13.3 不自動刪除檔案
整理工具建議只做:
```text
分類
移動
列出
統計
報告
```
不建議一開始加入:
```text
刪除
清空
覆蓋
永久移除
```
---
### 13.4 使用前先檢查
在執行正式 Downloads 整理前,可以先要求 Gemini CLI:
```text
請先列出你準備進行的操作,不要執行
```
確認後再輸入:
```text
可以,請開始執行
```
---
## 十四、正式整理 Downloads
### 14.1 切換到 Downloads
```bash
cd ~/Downloads
gemini
```
---
### 14.2 正式任務指令
```text
請幫我整理目前的 Downloads 資料夾,完成以下任務:
1. 先分析目前資料夾中的檔案類型
2. 建立分類資料夾:
- Images
- PDFs
- Documents
- Code
- Videos
- Archives
- Others
- Large
3. 根據副檔名分類檔案
4. 超過 100MB 的檔案另外列入 Large
5. 找出可能重複檔案,但不要刪除
6. 不要移動已經在分類資料夾內的檔案
7. 執行前先列出預計操作
8. 等我確認後再開始移動檔案
9. 完成後輸出 Markdown 表格報告
```
---
### 14.3 確認操作
當 Gemini CLI 列出預計操作後,確認內容是否合理。
可以檢查:
```text
是否只操作 Downloads
是否沒有刪除檔案
是否沒有使用 sudo
是否沒有覆蓋重要檔案
是否分類規則合理
```
確認後再輸入:
```text
確認,請開始執行
```
---
## 十五、延伸應用
相同方法可以延伸到其他日常任務。
這些任務的共同特點是:
```text
資料夾內容很多
檔案類型混雜
需要先分析再操作
適合用自然語言描述流程
```
使用 Gemini CLI 時,可以先讓 AI 分析目前資料夾,再決定是否要執行整理、分類或重新命名。
在涉及檔案移動、重新命名或刪除之前,建議都先要求它列出操作計畫。
---
### 15.1 桌面整理
桌面通常會累積截圖、下載檔案、暫存文件和各種零散資料。
可以請 Gemini CLI 先分析桌面內容,再依類型分類。
```text
請整理我的 Desktop,將截圖、文件、圖片和其他檔案分類,整理前先列出操作計畫
```
可以進一步要求:
```text
請不要直接移動檔案,先列出你打算建立哪些資料夾,以及每個檔案會被移到哪裡
```
適合分類成:
```text
Screenshots:截圖
Documents:文件
Images:圖片
Archives:壓縮檔
Others:其他
```
---
### 15.2 課業資料整理
課程資料夾中常見內容包含講義、作業、報告、程式碼、圖片和參考資料。
如果資料夾長期沒有整理,可以讓 Gemini CLI 先分析檔案內容,再建立分類架構。
```text
請整理這個課程資料夾,將講義、作業、報告、程式碼與圖片分開放,最後輸出資料夾摘要
```
可以進一步指定分類方式:
```text
請依照以下分類整理目前課程資料夾:
1. LectureNotes:講義與投影片
2. Homework:作業
3. Reports:報告
4. Code:程式碼
5. Images:圖片
6. References:參考資料
整理前請先列出操作計畫,不要直接移動檔案。
```
這種方式適合用在期中、期末整理課程資料,或整理專題資料夾。
---
### 15.3 專案資料夾檢查
Gemini CLI 也可以用來檢查專案資料夾的結構。
例如分析一個程式專案時,可以請它找出主要檔案、入口點、資料夾用途,以及可能需要改善的地方。
```text
請分析這個專案資料夾,告訴我有哪些主要檔案、可能的程式入口點,以及可以改善的檔案結構
```
可以進一步要求輸出成表格:
```text
請用 Markdown 表格整理這個專案資料夾的結構,欄位包含:
檔案或資料夾名稱、用途、是否重要、可以改善的地方
```
如果是程式專案,也可以補充:
```text
請不要修改任何檔案,只分析目前專案結構,並提出整理建議
```
這樣可以避免 AI 在還沒理解專案前直接修改檔案。
---
### 15.4 批次重新命名
批次重新命名是比較高風險的操作,因為一旦改名後,可能會影響檔案辨識或專案引用。
因此建議先讓 Gemini CLI 產生「新舊檔名對照表」,確認後再執行。
```text
請幫我分析目前資料夾中的檔案命名方式,提出重新命名規則,先列出新舊檔名對照表,不要直接改名
```
可以要求輸出格式:
```text
請用 Markdown 表格列出重新命名建議,欄位包含:
原始檔名、新檔名、重新命名原因
```
確認後再輸入:
```text
我確認以上命名規則,請開始重新命名
```
如果還不確定,可以先要求 dry-run:
```text
請只模擬重新命名流程,不要真的修改檔名
```
---
## 十六、課程總結
本課程完成的內容:
```text
1. 認識 CLI
2. 認識 Gemini CLI
3. 認識 AI Agent 的任務流程
4. 安裝並啟動 Gemini CLI
5. 使用 Gemini CLI 讀取與操作資料夾
6. 建立 Downloads 管理流程
7. 加入統計、報告與安全確認
```
本課程的核心流程可以整理成:
```text
描述任務
→ 分析資料夾
→ 建立分類規則
→ 執行檔案操作
→ 輸出整理報告
```
完成後可以使用:
```text
gemini "整理 Downloads,分類檔案並輸出報告"
```
作為日常檔案管理工具。
---
### 16.1 使用 Gemini CLI 時的安全原則
在讓 Gemini CLI 操作電腦時,可以記住以下原則:
```text
1. 先在測試資料夾操作
2. 重要資料不要一開始就交給 AI 整理
3. 涉及刪除、覆蓋、重新命名時,先要求 dry-run
4. 執行前先看操作計畫
5. 不理解的指令不要直接允許
```
檔案整理工具建議優先做:
```text
分類
移動
統計
報告
```
初學階段不建議直接加入:
```text
刪除
清空
覆蓋
永久移除
```
---
## 十七、最終版本 Prompt
以下是一個可重複使用的版本:
```text
請幫我整理目前資料夾,完成以下任務:
1. 分析目前資料夾中的檔案類型
2. 建立分類資料夾:
- Images
- PDFs
- Documents
- Code
- Videos
- Archives
- Others
- Large
3. 根據副檔名分類檔案
4. 超過 100MB 的檔案列入 Large
5. 找出可能重複檔案,但不要刪除
6. 不要移動已經在分類資料夾內的檔案
7. 執行前先列出預計操作
8. 等我確認後再開始執行
9. 完成後用 Markdown 表格輸出整理報告
```
---
### 17.1 更安全的 dry-run 版本
如果還不確定分類規則是否正確,可以先使用 dry-run 版本。
```text
請幫我分析目前資料夾,並模擬整理流程。
需求如下:
1. 分析目前資料夾中的檔案類型
2. 規劃分類資料夾:
- Images
- PDFs
- Documents
- Code
- Videos
- Archives
- Others
- Large
3. 根據副檔名規劃檔案分類
4. 超過 100MB 的檔案列入 Large
5. 找出可能重複檔案,但不要刪除
6. 不要真的移動任何檔案
7. 請列出每個檔案預計會被移動到哪個資料夾
8. 最後用 Markdown 表格輸出整理計畫
```
dry-run 確認沒問題後,再使用正式版本執行。
---
回饋表單:https://forms.gle/Y8Z5YwHtE7UieEmu6

---
## 進階、自動化整理:每週自動整理 Downloads
前面的流程是手動執行:
```text
gemini "整理 Downloads,分類檔案並輸出報告"
```
如果希望之後不用每次手動輸入,也可以請 Gemini CLI 協助產生腳本,並設定每週固定執行。
這個流程可以分成兩個部分:
```text
1. 讓 Gemini CLI 產生整理腳本
2. 使用系統排程工具每週執行
```
---
### 18.1 讓 Gemini CLI 產生整理腳本
可以在 Gemini CLI 中輸入:
```text
請幫我寫一個整理 Downloads 的腳本,完成以下任務:
1. 分析 Downloads 裡的檔案類型
2. 建立分類資料夾:
- Images
- PDFs
- Documents
- Code
- Videos
- Archives
- Others
- Large
3. 根據副檔名分類檔案
4. 超過 100MB 的檔案放到 Large
5. 找出可能重複檔案,但不要刪除
6. 不要移動已經在分類資料夾內的檔案
7. 不要刪除任何檔案
8. 不要覆蓋同名檔案
9. 每次執行後產生一份整理紀錄 log
10. 請先輸出腳本內容,不要直接執行
```
這個 prompt 的重點是:
```text
不要刪除檔案
不要覆蓋同名檔案
不要直接執行
產生 log
限制操作範圍在 Downloads
```
---
### 18.2 先產生 dry-run 腳本
在正式自動整理前,建議先讓 Gemini CLI 產生 dry-run 版本。
dry-run 的意思是:
```text
只列出預計會做什麼
不真的移動檔案
不真的重新命名
不真的刪除檔案
```
可以輸入:
```text
請先幫我產生 dry-run 版本的 Downloads 整理腳本。
需求如下:
1. 掃描 Downloads
2. 分析檔案類型
3. 規劃分類資料夾
4. 列出每個檔案預計移動到哪裡
5. 找出超過 100MB 的檔案
6. 找出可能重複檔案
7. 不要真的建立資料夾
8. 不要真的移動檔案
9. 不要刪除任何檔案
10. 最後輸出 Markdown 表格報告
```
dry-run 版本測試正常後,再請 Gemini CLI 修改成正式執行版本。
---
### 18.3 macOS / Linux 腳本範例
如果使用 macOS 或 Linux,可以請 Gemini CLI 產生 `.sh` 腳本,例如:
```bash
organize_downloads.sh
```
儲存後給予執行權限:
```bash
chmod +x organize_downloads.sh
```
測試執行:
```bash
./organize_downloads.sh
```
如果腳本不在目前資料夾,需要使用完整路徑執行,例如:
```bash
/Users/你的使用者名稱/organize_downloads.sh
```
或 Linux:
```bash
/home/你的使用者名稱/organize_downloads.sh
```
---
### 18.4 Windows PowerShell 腳本範例
如果使用 Windows PowerShell,可以請 Gemini CLI 產生 `.ps1` 腳本,例如:
```powershell
organize_downloads.ps1
```
測試執行:
```powershell
.\organize_downloads.ps1
```
如果遇到 PowerShell 執行政策限制,可以先查詢目前設定:
```powershell
Get-ExecutionPolicy
```
若需要允許目前使用者執行本機腳本,可以使用:
```powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
```
設定後再執行:
```powershell
.\organize_downloads.ps1
```
---
### 18.5 每週自動執行:macOS / Linux
macOS / Linux 可以使用 `cron` 設定固定時間執行。
打開 crontab:
```bash
crontab -e
```
加入以下內容,代表每週一早上 9 點執行:
```cron
0 9 * * 1 /Users/你的使用者名稱/organize_downloads.sh
```
如果是 Linux,路徑可能會像這樣:
```cron
0 9 * * 1 /home/你的使用者名稱/organize_downloads.sh
```
時間格式說明:
```text
0 9 * * 1
│ │ │ │ │
│ │ │ │ └── 星期一
│ │ │ └──── 每個月
│ │ └────── 每日
│ └──────── 早上 9 點
└────────── 第 0 分鐘
```
如果想改成每週日晚上 10 點執行:
```cron
0 22 * * 0 /Users/你的使用者名稱/organize_downloads.sh
```
---
### 18.6 每週自動執行:Windows PowerShell
Windows 可以使用「工作排程器」或 PowerShell 指令建立排程。
以下範例會建立一個每週一早上 9 點執行的任務。
```powershell
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File `"$HOME\organize_downloads.ps1`""
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 9am
Register-ScheduledTask -TaskName "OrganizeDownloadsWeekly" -Action $Action -Trigger $Trigger -Description "Weekly Downloads organizer"
```
建立後可以到「工作排程器」中查看:
```text
Task Scheduler
→ Task Scheduler Library
→ OrganizeDownloadsWeekly
```
如果要手動執行排程任務測試:
```powershell
Start-ScheduledTask -TaskName "OrganizeDownloadsWeekly"
```
如果要移除這個排程任務:
```powershell
Unregister-ScheduledTask -TaskName "OrganizeDownloadsWeekly"
```
---
### 18.7 自動化前的安全檢查
設定每週自動整理前,建議先確認:
```text
1. 腳本已經手動測試成功
2. 腳本不會刪除檔案
3. 腳本不會覆蓋同名檔案
4. 腳本只操作 Downloads
5. 腳本會輸出 log
6. 腳本可以處理同名檔案
7. 腳本在 dry-run 模式下結果合理
```
如果還不確定結果是否穩定,可以先讓腳本只產生報告,不移動檔案。
可以請 Gemini CLI 修改腳本:
```text
請把這個腳本改成 dry-run 模式,只列出預計移動哪些檔案,不要真的移動
```
---
### 18.8 可重複使用的自動化 Prompt
以下是一個可以直接使用的 prompt:
```text
請幫我產生一個每週整理 Downloads 的腳本,需求如下:
1. 依副檔名分類檔案
2. 圖片放 Images
3. PDF 放 PDFs
4. 文件放 Documents
5. 程式碼放 Code
6. 影片放 Videos
7. 壓縮檔放 Archives
8. 其他檔案放 Others
9. 超過 100MB 的檔案也要記錄在報告中
10. 找出可能重複檔案,但不要刪除
11. 不要覆蓋同名檔案
12. 不要刪除任何檔案
13. 每次執行後產生 log
14. 先提供 dry-run 版本
15. 最後告訴我如何設定每週自動執行
請根據我的作業系統產生對應版本。
```
---
### 18.9 小結
手動整理適合學習流程,自動化整理適合長期使用。
完整流程可以整理成:
```text
設計任務
→ 產生腳本
→ 手動測試
→ 加入 dry-run
→ 確認安全
→ 設定每週排程
```
完成後,Downloads 管理助手就可以從一次性的操作,變成固定執行的日常自動化工具。
---
回饋表單:https://forms.gle/Y8Z5YwHtE7UieEmu6