HOWTO · Batch
使用批處理檔案寫入文字檔案
本教程將討論使用批處理指令碼編寫文字檔案。
本頁內容
使用 ECHO 搭配 > 建立文字檔或取代檔案內容;使用 >> 則可保留現有內容並在後方新增文字。這些運算子適用於 Windows 命令提示字元和 .bat 指令碼。以下範例會顯示要執行的命令,以及寫入各檔案的文字。
建立新的文字檔
這個指令碼會在目前工作目錄的 myfile.txt 中寫入一行文字:
@echo off
echo This is my first line of text > myfile.txt
檔案內容是 This is my first line of text;這段範例文字維持英文。如果 myfile.txt 已存在,> 會取代原有內容。若要寫入其他位置,請使用完整的目的地路徑,例如 C:\Users\YourName\Documents\myfile.txt;目的地資料夾必須已存在。@echo off 可避免指令碼執行時顯示批次命令。
附加內容至現有文字檔
若要保留目前內容並在檔案末尾新增一行,請使用 >>。以下獨立範例會先建立已知的起始檔案,再附加第二行:
@echo off
echo First line> myfile.txt
echo Added line>> myfile.txt
指令碼執行後,檔案會先有 First line,下一行則是 Added line;這些範例文字維持英文。每次再次執行都會多加一行 Added line,而不會取代先前的文字。範例中的第一個命令使用 > 來準備起始檔案;若要用於已有資料的檔案,請移除該命令。
將多行文字寫入文字檔
將多個 ECHO 指令以括號括起來,並對整個指令群組進行一次重新導向:
@echo off
(
echo First line
echo Second line
echo Third line
) > myfile.txt
每個命令各自寫入一行。此指令群組使用 > 重新導向,因此執行後,目標檔案會被這三行文字取代。將 > 改為 >>,即可把這幾行附加到現有內容之後。
在文字檔中使用變數
使用 SET 定義值,再以百分比符號括住變數,將它展開並寫入一行文字:
@echo off
set "myVariable=Hello from Batch"
echo %myVariable%> myfile.txt
檔案會收到 Hello from Batch,這段範例文字維持英文。使用加引號的 SET 寫法可避免值末尾意外帶入空格;引號本身不會成為值的一部分。若要將變數值附加到現有檔案,請改用 >>。
將命令輸出寫入文字檔
將 DIR 等命令重新導向,即可儲存其列出的內容:
@echo off
dir > directory_list.txt
這會建立 directory_list.txt,或以目前目錄的清單取代檔案原有內容。清單項目取決於電腦和工作目錄,因此檔案內容會有所不同。若要將新的清單附加到現有文字之後,請使用 dir >> directory_list.txt。
更新現有文字檔
請依照任務中「更新」的意思選擇運算子:>> 會新增文字並保留現有行,> 則會以該命令產生的文字取代檔案內容。例如,echo Status: complete >> myfile.txt 會新增一行狀態文字。若要修改特定一行並保留其他內容,請先使用專為這類操作設計的檔案編輯工具。使用 FOR /F 讀取並重寫檔案的迴圈,不是通用且安全的替代方法,因為它可能會改動空白行,以及包含 Batch 特殊字元的文字。
常見問題
- 如何建立文字檔? 使用
ECHO搭配>;檔案不存在時會建立,若已存在則會取代原有內容。 - 如何附加文字而不取代現有內容? 使用
>>。 - 如何寫入多行? 將多個
ECHO指令放在括號區塊中,並對整個區塊進行重新導向。 - 一行文字可以包含變數嗎? 可以。使用
SET定義變數,再於ECHO指令中以%variableName%展開。 - 如何儲存命令輸出? 在命令後加上
>或>>,即可取代目的檔案內容或附加輸出。