📘 BAT 中的 for /F 使用方法
在 Windows 批次檔(.bat)中,for /F 是一個非常實用的指令,用來逐行處理文字檔或讀取命令的輸出結果。本篇整理了 for /F 的基本語法、參數用法,以及實用範例,幫助你掌握它的應用。
🔹 什麼是 for /F?
-
for /F是for指令的延伸,用來「逐行讀取文字檔內容」或「解析一條命令的輸出」。 -
它和一般的
for不一樣,不是用來跑數字或列出檔案,而是處理文字資料。
📌 基本語法:
for /F ["options"] %%A in (filename.txt) do (
command...
)
或:
for /F ["options"] %%A in ('some command') do (
command...
)
🔸 常用參數說明:
| 參數 | 說明 |
|---|---|
delims= |
指定分隔符。若設為空,代表「不要分隔整行」 |
tokens=n |
指定要取第幾個欄位的資料(token) |
'command' |
以反引號(或用 usebackq 時用雙引號)包住的指令,表示讀取其輸出內容 |
📘 範例一:逐行讀取文字檔
假設 list.txt 內容如下:
apple
banana
cherry
程式碼:
@echo off
for /F "delims=" %%A in (list.txt) do (
echo %%A
)
輸出:
apple
banana
cherry
🔹 delims= 這裡的作用是:避免內容中有空白時被截斷,讓整行內容都能被讀取。
📘 範例二:處理指令的輸出
@echo off
for /F "tokens=2 delims=:" %%A in ('ipconfig ^| find "IPv4"') do (
echo IP 是:%%A
)
說明:
-
這段會從
ipconfig的輸出中找出 IPv4 位址。 -
tokens=2 delims=:是說「用冒號分隔,取第二欄」。
📘 範例三:使用 tokens 拆解欄位
假設有一個 CSV 檔 data.txt:
Tom,25,Taipei
Amy,30,Kaohsiung
John,28,Taichung
程式碼:
@echo off
for /F "tokens=1,3 delims=," %%A in (data.txt) do (
echo 姓名: %%A, 城市: %%B
)
輸出:
姓名: Tom, 城市: Taipei
姓名: Amy, 城市: Kaohsiung
姓名: John, 城市: Taichung
✅ 是否一定要寫 delims=?
不是,但建議加上。
如果你確定你的文字檔內容沒有空白或特殊符號,可以省略 delims=,但一旦某一行出現空格,就可能會被分割,只抓到第一個詞。例如:
apple pie
沒加 delims= 時,只會抓到 apple。所以:
for /F "delims=" %%A in (list.txt) do (
echo %%A
)
是比較安全、穩定的寫法。
🧠 小結
| 功能 | 用法範例 |
|---|---|
| 逐行讀取文字檔 | for /F "delims=" %%A in (file.txt) |
| 處理命令輸出結果 | for /F "tokens=2 delims=:" %%A in ('command') |
| 解析多欄資料(CSV) | for /F "tokens=1,2 delims=," %%A in (file.csv) |
| 避免被空白分割 | 使用 delims= 保留整行資料 |
沒有留言:
張貼留言