
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=
;の代わりにnote を使用してくださいdelims=*
(そして、考えてみてください: この提案は間違っているかもしれません)。
リソース(必読):
- (コマンドリファレンス)Windows CMD コマンドラインの AZ インデックス
- (役に立つ詳細)Windows CMD シェルのコマンド ライン構文
- (
%~I
など特設ページ)コマンドライン引数(パラメータ) - (特設ページ)遅延拡張を有効にする
- (
>>
など>
特設ページ)リダイレクション