このコマンドforfiles
は、ディレクトリを列挙し、各項目に特定のコマンドを適用することを目的としています。/S
完全なディレクトリツリーに対しても同じことができます。
列挙されたディレクトリ (ツリー) の内容が、コマンド本体のコマンドによって変更されるとどうなりforfiles
ますか?
D:\data
次の内容のディレクトリがあるとします。
file1.txt
file2.txt
file3.txt
上記のディレクトリで実行した場合の出力にはforfiles /P "D:\data" /M "*.txt" /C "cmd /C echo @file"
、明らかに上記のリストが反映されます。
しかし、forfiles
本体のコマンドがディレクトリの内容を変更するときの出力は何ですか? たとえば、リスト内のファイルの 1 つfile3.txt
が実際に繰り返される前に削除されたとします。file4.txt
または、ループが完了する前に、のように新しいファイルが作成された場合はどうなりますか?
そのような状況でどのforfiles /S
ように行動しますか?いくつかのサブディレクトリsub1
、sub2
、 がありsub3
、それぞれに上記のファイルのリストが含まれているとします。forfiles /S
現在 を反復処理中ですsub2
。sub1
は既に処理されていますが、まだ処理されていsub3
ません。sub1
との内容はsub3
その時点で変更されます (前述のように現在ウォークスルーsub2
している場合)。では何が挙げられるでしょうか?内容の変更はsub1
認められないと思いますが、どうsub3
でしょうか?
私は主にforfiles
Windows Vista 以降の動作に興味があります。
注:コマンドについて非常によく似た質問
をすでに投稿しました。ただし、組み込みコマンドではなく、構文がまったく異なるため、他の質問の範囲を拡張するのではなく、別の質問を投稿することにしました。for
forfiles