
我必須合併一組 ASCII 文件,並嘗試使用此批次文件,該文件創建一個新文件,該文件組合了所有文件並從每個文件中刪除了標頭。
@echo off
FOR /F "delims=*" %%i in (header.txt) do @echo %%i
FOR /F "skip=1 delims=*" %%i in (A1.DAT A2.DAT A3.DAT A4.DAT A5.DAT) do @echo %%i
這個批次檔有效,但我想使用像 *.dat 這樣的通配符,而不是在批次檔中提供每個檔案名稱。有人可以幫助我,如何使用通配符而不是輸入單一檔案名稱?
答案1
嘗試下一個程式碼片段:
@echo off
SETLOCAL EnableExtensions
FOR /F "delims=" %%i in (header.txt) do @echo %%i
FOR %%I in (*.dat) do @FOR /F "usebackq skip=1 delims=" %%i in ("%%~I") do @echo %%i
使用它,例如如下:>"1127756merged.txt" 1127756.bat
這裡
FOR %%I in (*.dat)
循環返回.dat
目前目錄資料夾中所有檔案的清單;- 這個清單是動態的即載入您在處理過程中新增至資料夾的檔案;
- 得到一個靜止的列出,
FOR /F "delims=" %%I in ('dir /B *.dat')
改為使用;
- 嵌套
%%i
循環按順序處理所有文件; - 注意
delims=
而不是你的delims=*
; (並想一想:也許我的這個建議是錯的)。
資源(必讀):
- (命令參考)Windows CMD 命令列的 AZ 索引
- (有用的細節)Windows CMD Shell 命令列語法
- (
%~I
等特別頁)命令列參數(參數) - (特別頁)啟用延遲擴展
- (
>>
等>
專頁)重定向