0

最初の列の 1 つの場所にあるすべてのフォルダー名と、隣接する列のそのフォルダーの .xxx ファイルのスプレッドシートを作成できるバッチファイルを探していました。最終的には、最初の列と各行にフォルダー名を持つレポートが必要です。そのフォルダ内の対応する .xxx ファイル名

たとえば、folder_main に f1、f2 などがあり、各フォルダーに g1.xx、g2.xxx などがあると仮定すると、レポートが表示されます。

 column1     column 2      column 3 ............
 f1           g1.xxx       g2.xxx   .....
 f2           h1.xxx.......

この機能を実行するために vb でバッチ ファイルまたはスクリプトを作成する方法を教えてください。何千ものフォルダがあります。

4

1 に答える 1

0

CSV スタイルの出力を作成するための出発点は次のとおりです。任意のスプレッドシート プログラムで開くことができるはずです。

@ECHO OFF

SETLOCAL EnableDelayedExpansion

FOR /F "delims=" %%A IN ('DIR /AD /B 2^> NUL') DO (
    SET line="%%A"
    FOR /F "delims=" %%B IN ('DIR %%A\*.xxx /B 2^> NUL') DO SET line=!line!,"%%B"
    ECHO !line!
)

あなたがバッチ スクリプトについてどれだけ知っているかはわかりませんが、とりあえずそのままにしておきます。ただし、不明な点があれば遠慮なくお尋ねください。

EDIT: -stuffを機能
EnableDelayedExpansionさせるために必要です!(以下を参照)。

最初のFOR行は、現在のディレクトリ内のすべてのサブディレクトリをループし、考えられるすべてのエラー メッセージを破棄します。DO (最後の行のとの間のものは、)見つかったサブディレクトリごとに実行されます。

line-variable は、2 番目の-loop がFOR終了すると、すべてのファイルを保持します。サブディレクトリの名前、つまり CSV 出力の最初の列で初期化されます。

その 2 番目のループは、最初のループで見つかったサブディレクトリ内のFOR拡張子を持つすべてのファイルを検索しxxx、考えられるエラー メッセージを再度破棄します。はSETファイル名を相互に追加します。

は、おなじみのの!代わりに使用されます。遅延展開をコードに適用します (コマンド ラインで%この実行に関する詳細情報が必要な場合)。SET /?

ディレクトリ構造をさらに深く掘り下げたい場合は、最初のループで -command に追加/Sする必要があります。DIR'DIR /AD /B /S 2^> NUL'

于 2012-10-15T06:53:42.923 に答える