質問: コマンドライン:複数のファイルを日付で連結します ディレクトリにたくさんの.txtファイルがあります。このディレクトリには、.pngファイルといくつかの.pdfファイルも含まれています。このコマンドを使用して、.txtファイルを正常に連結しました。@echo off setlocal for /r %%f in (*.txt) do ( echo. type "%%f" )>> output.doc goto :eof 上記のコマンドは、オンラインサイトの1つから取得したものです。このコマンドは、.txtファイルをアルファベット順に連結します。しかし、私はそれをそのようにしたくありません、私はそれが変更または作成された日付までに行われることを望みます(変更が推奨されます)。私はその行のヒントを持っていますfor /r %%f in(*.txt) do ( 日付で連結するには、変更する必要があります。このコマンドラインまたはバッチスクリプトは初めてなので、あまり詳しくありません。どうすればいいですか。答えてくれてありがとう。初めてこの質問を含めなかったことをお詫びします。以前に尋ねた別の質問に基づいて、もう1つの要件があります( 質問 )。txtファイルを連結し、すべてのファイルの上に2行を追加するためのバッチファイルがあります(1つは書き込み用です)拡張子のないファイル名と、連結ファイルに関連付けられた日付を書き込むためのその他のファイル)。以下のバッチファイルを変更して、.txtファイルを日付変更順に連結し、各ファイルの上に2行追加してください。@echo off setlocal for /r %%f in (*.txt) do ( echo file name : %%~nf for /f %%d in ("%%~tf") do echo date : %%d echo. type "%%f" ) >> output_text.doc goto :eof すべての問題は最終的なバッチファイルを解決しました:@echo off setlocal enableextensions disabledelayedexpansion set "root=%cd%" >"output.doc" ( for /f "tokens=1,2,*" %%a in (' robocopy "%root%\." "%root%\." *.txt /l /s /is /ts /ndl /njh /njs /nc /ns ^| sort ') do ( echo( %%~nc for /f "tokens=1-3 delims=/" %%d in ("%%a") do echo %%f/%%e/%%d type "%%~fc" ) )
回答: @echo off setlocal enableextensions disabledelayedexpansion set "root=%cd%" >"output.doc" ( for /f "tokens=2,*" %%a in (' robocopy "%root%\." "%root%\." *.txt /l /s /is /ts /ndl /njh /njs /nc /ns ^| sort ') do type "%%~fb" ) これは、robocopyを使用して、指定されたルートフォルダーの下にあるすべての.txtファイルのリストを取得します。ファイルのリストは、ファイルの最終変更日を含めて生成されます。 robocopyはutc時刻をyyyy/mm/dd hh:mm:ss形式で出力するため、リストを適切に並べ替えることができます。コードの残りの部分は、最終的なリストを処理し、ファイル参照を取得して入力するためのfor /fコマンドです。処理された各ファイルの開閉操作を回避するために、完全なコマンドが出力ファイルにリダイレクトされます。編集済み最終出力にファイル名とタイムスタンプを含める必要があるため...@echo off setlocal enableextensions disabledelayedexpansion set "root=%cd%" >"output.doc" ( for /f "tokens=1,2,*" %%a in (' robocopy "%root%\." "%root%\." *.txt /l /s /is /ts /ndl /njh /njs /nc /ns ^| sort ') do ( echo(%%~nc echo(%%a %%b [%%~tc] type "%%~fc" ) ) tokens句が変更されてrobocopyからタイムスタンプを取得するようになり、出力に含めることができるようになりました。 %%aは日付、%%b時刻、%%cはフルパスのファイル名を保持します。ファイルごとに、最初に拡張子なしのファイル名(%%~nc)がエコーされ、次にrobocopyタイムスタンプがエコーされ、robocopyの出力がutc時間であるため、ファイルのタイムスタンプ( %%~tc)。次に、ファイルが入力されます。以前と同様に、すべての出力は最終ファイルにリダイレクトされます。