2

これが状況です。次のような名前の各ディレクトリに10,000個のファイルがあるディレクトリがあります。

ファイル名.XX0000.csv

ファイル名.XX9999.csv

ファイル名自体のサイズは次のように変更できます。

ファイル名.XXX0000.csv

ファイル名.XXX9999.csv

ファイル名.XXXX0000.csv

ファイル名.XXXX9999.csv

X はもう 1 つの親番号ですが、これらはいずれにせよ無視する必要があります。

とにかく、すべてのディレクトリには正確に10,000個のファイルが含まれているはずですが、それ以上でもそれ以下でもありません。問題は、一部が欠落しており、どれが欠落しているかを知る必要があることです。

この投稿のスクリプトを試しました: 欠落しているシーケンスを見つけるためのバッチ スクリプト

数時間ストリング・シーケンスをいじっても無駄でした。これらのオプションはどちらもうまく機能しません。2 番目のスクリプトは近づいてきますが、エンドレス ループに陥ったり、存在するファイルを吐き出したりします。

どの番号またはファイル名が欠落しているかを簡単に教えてくれる解決策を考え出す必要があります。私の夢の世界では、親ディレクトリ内に配置できるスクリプトが大好きで、すべてのサブディレクトリをクロールして、欠落しているディレクトリの単一ファイルを出力します。

ファイル名の最初の部分が何であるかをスクリプトに伝える必要がないのは良いことです。理論的には、最後の 4 つの数字が 0000 から 9999 まで存在するかどうかだけを確認する必要があるためです。

これは私の最初の投稿なので、新しいトピックを作成してこれを正しく行うことを望んでいます。投稿ボックスに「しかし避けてください…」が表示されるまで、前のトピックに質問を追加するつもりでした!

4

2 に答える 2

6

コードを書くことができるか見てみましょう。

  • FOR /L0から9999まで数えられる
  • IF NOT EXISTファイルが欠落しているかどうかをテストでき、ワイルドカードをサポートしています。
  • >出力を>>ファイルにリダイレクトできます

あなたの夢の世界のために:

  • FOR /D /R %%F IN (.)フォルダ階層全体を反復します

編集

幅が常に 4 桁になるように、数値をゼロで埋める必要があるでしょう。これはおそらくループ内にあるため、遅延展開を使用する必要があります。%%N が数値を含む FOR 変数であるとします。

set num=000%%N
set num=!num:~-4!
于 2012-07-18T12:09:02.463 に答える