コマンドラインでテキストファイルをソートして1つのファイルにコピーするとエラーが発生する

コマンドラインでテキストファイルをソートして1つのファイルにコピーするとエラーが発生する

アルファベット順に並べられたファイルを 1 つのファイルにコピーする方法を説明している質問 217394 を見つけました。自分でコマンドを実装しようとすると、次のエラー メッセージが表示されました: 指定されたファイルが見つかりません。
実行しようとしているコマンドは次のとおりです:

/f %i in ('dir /ad /on /b O:\OrdersExport\Order*.txt') で @type %i を実行します >> C:\Users\Admin\Documents\OrderImport.txt

最初に問題のフォルダを参照すると、エラーは表示されません。

C:\>O:
C:\>cd OrdersImport

宛先からその単一のファイルに 1 行をコピーするだけです。

ちなみに、O:はネットワーク経由でマップされたフォルダです

答え1

このdirコマンドはファイル名のみをリストします。したがって、%i変数には相対パスが入ります。コマンドが問題のディレクトリから実行されていない場合は、%~fi相対パスを絶対パスに拡張するために を使用します。

for /f "tokens=*" %i in ('dir /a-d /o-n /b "O:\OrdersExport\Order*.txt"') do (
    @type "%~fi" >> "C:\Users\Admin\Documents\OrderImport.txt"
)
  • tokens=*ファイル名内のスペースを処理するため、出力%iは常に行全体になりますdir

関連情報