これは特に困惑的な問題です。私は何をしなくても使えるとは思っていますが、通常は単純なバッチファイルしか書いていません。フォルダ名のプレフィックスとタイムスタンプを複数のフォルダに結合して、プレフィックスのある新しいフォルダに組み込みます。
私が働く病院で巨大な研究プロジェクトを持っている、と私は働いているデータはこの例に見られるように、タイムスタンプに続く4桁のサブジェクト識別子を私に提示されています
6443_20170419_141200416
6443_20170419_141200447
6443_20170419_141200500
6476_20170419_141200537
6476_20170419_141201112
など
私が点灯していますこれらのフォルダは何千もあり、それぞれが非常に長いファイル名の1〜3のファイルです - 唯一の共通点は.DCM拡張です。
私がしたいのは、フォルダ名の最初の4文字を抽出し、その4文字の名前で新しいディレクトリを作成し、一致する接頭辞を持つフォルダ内にあるファイルを新しく作成されたフォルダ
たとえば、6443で始まるフォルダに複数の.DCMファイルがあるとします。 6443という名前の新しいフォルダを作成して(誤って削除しないように現在のディレクトリとは別の場所に)、各ディレクトリのすべての.DCMファイルを新しいフォルダに移動します。
私は、このファイルを歩くためにFOR/Fを使用して、他のさまざまなスクリプトタスクに使用していた件名ID#をすべて含んでいる.TXTファイルを持っています。 。
これは一度は本当に私のノックインです。助けて!!!
-----追加情報----- 私は進歩してきましたが、それはまだ正しくありません。私は以下のようにスクリプトを使用していますが、4桁のプレフィックスで並べ替えるのではなく、各フォルダ内のすべてのファイルを新しく作成したフォルダのそれぞれに移動しています。ここで
@ECHO on
cls
FOR /f "delims=_" %%a IN ('dir /b /ad "*_*_*"') DO (
if not exist %%a MD .\combined\%%a
FOR /d /r %%d IN ("*") DO (
copy %%d\* .\combined\%%a\*
)
)
ありがとうございました - それについては分かりません:) もう1つ質問があります。%% bの意味とその動作について少し教えてください。結合したファイルを2文字の接頭辞でさらに分離し、それらをコピーするときに名前を変更するコードを追加していますが、正しく機能していません。 –
['/F'](http://ss64.com/nt/for_f.html)を見てください - あなたは' %% a'、 '%% b'のような参照を見つけるでしょう。 '?'は1文字を表すワイルドカードです - ['dir'](http://ss64.com/nt/dir.html)を参照してください。もちろん、あなたの新しい問題に関する新しい質問をすることができます... – aschipfl