Windows バッチ プログラム

Windows バッチ プログラム

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=*(そして、考えてみてください: この提案は間違っているかもしれません)。

リソース(必読):

関連情報