複数のテキストファイルを1つに連結するスクリプトを作成する必要があります。使いやすい
type *.txt > merged.txt
しかし、要件は「同日からのファイルをファイルday_YYYY-DD-MM.txtに連結する」ことです。私はLinuxユーザーで、Windowsバッチは私にとって地獄です。
編集:そのWindows XP
Windows type
コマンドは、UNIX cat
と同様に機能します。
例1:ファイル名とマージ(これによりfile1.csvとfile2.csvがマージされ、concat.csvが作成されます)
type file1.csv file2.csv > concat.csv
例2:パターンでファイルをマージ(これにより、csv拡張子を持つすべてのファイルがマージされ、concat.csvが作成されます)
type *.csv > concat.csv
最も基本的には、バッチファイルからのファイルの連結は「コピー」で行われます。
copy file1.txt + file2.txt + file3.txt concattedfile.txt
コピーする必要があるすべてのファイルを別のフォルダーに配置します。これにより、Cドライブに簡単に配置できます。
コマンドプロンプトを開く-windows> type cmd> selectコマンドプロンプト。
デフォルトのディレクトリポインティングを見ることができます-例:C:[フォルダ名]>。 'cd [Folder_Name]'コマンドを使用して、コピーするファイルを配置したフォルダーを指すようにディレクトリを変更します。
ディレクトリをポイントした後、「dir」と入力すると、フォルダ内にあるすべてのファイルが表示され、すべてが適切に配置されていることが確認されます。
次に、「copy * .txt [newfile_name] .txt」と入力してEnterキーを押します。
できた!
個々のファイルのすべてのテキストは[newfile_name] .txtにコピーされます
すでに述べた他のポイントのいくつかを繰り返しますが、連結したいフォルダーにファイルがある場合に役立つ3番目の例を含めます。
例1(同じフォルダー内のファイル):
copy file1.txt+file2.txt+file3.txt file123.txt
例2(同じフォルダー内のファイル):
type *.txt > combined.txt
例3(ファイルは複数のフォルダーに存在し、newfileoutput.txtが存在しないことを前提としています):
for /D %f in (folderName) DO type %f/filename.txt >> .\newfileoutput.txt
これを試して:
@echo off
set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%
set /p temp= "Enter the name of text file: "
FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%temp%.txt
このコードでは、日付を入力できる「day_」の後にファイル名を設定するように求められます。実際の日付のようにファイルに名前を付けたい場合、これを行うことができます:
FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%yyyy%-%mm%-%dd%.txt
タイプを使用してそれを行うことができます:
type"C:\<Directory containing files>\*.txt"> merged.txt
ディレクトリ内のすべてのファイルがファイルmerged.txt
に追加されます。
通常のCATコマンドを使用してファイルをマージできます。
D:> cat * .csv> outputs.csv
cat "入力ファイル"> "出力ファイル"
これはPowerShellで動作します。PowerShellは、現在のWindowsバージョンでWindows優先シェルであるため、動作します。また、「タイプ」または「コピー」が失敗する大きなファイルで動作する上記の回答の唯一のバージョンです。