バッチスクリプト: ファイルを類似の名前を持つ対応するフォルダに移動する

バッチスクリプト: ファイルを類似の名前を持つ対応するフォルダに移動する

私はペーパーレス診療を設定し、すべての患者データを電子的に保存しようとしています。すでに 8000 個のフォルダー (1 - 8000) を作成しており、現在、約 16000 個の .pdf ファイルを対応するフォルダーに移動する必要があります。たとえば、「202 医療補助カード」、「202 医師紹介」、「202 病気手帳」はフォルダー「202」に移動する必要があります。すべてのファイルは 1 つのフォルダーに保存されています。

よろしくお願いします。

答え1

あなたの状況がそれ単純な場合は、次のようなオペレーティング システム コマンドを発行するだけです。

MOVE 202* 202\

等々。

答え2

この質問に対する現在の他の回答を詳しく説明します。

  1. プレーン テキスト エディター (Windows のメモ帳など) で新しいテキスト ドキュメントを開き、次のバッチ命令をコピーします。

    FOR /L %%G IN (1,1,8000) DO (
        MOVE ".\%%G *" ".\%%G\"
        )
    
  2. このファイルを例: として保存しますsort_files.bat

  3. この.batファイルを、並べ替えたいファイルと同じフォルダーに配置します。

  4. sort_files.batダブルクリックするか、コマンド ラインから実行して実行します。

注意点

  • .\%%G *ファイル名の形式は、例: と想定されます202 Medical Aid Card。スペースを入れ忘れると(つまり.\%%G*)、ファイルは正しくソートされず、巨大な頭痛がします(だから、これはやらないでください!=P)。

  • .\%%G\既存のフォルダがファイルと同じディレクトリにあることを前提としています。そうでない場合は、.フォルダ ディレクトリへの実際のパス (例C:\path\to\folder\directory\%%G\) に置き換えてください。

  • 式 では(1,1,8000)、最後の値 (例: 8000) によって、処理されるループの合計数が決まります。にコミットする前に、最初に(1,1,8000)扱いやすい数 (例: (1,1,10)) に減らしてバッチ ファイルをテストし (結果をチェックし) ることを検討してください(1,1,8000)


ノート

  • %%Gはループをカウントするために使用されるバッチ変数です。ループが処理されるにつれて数値に置き換えられます。つまり、MOVE ".\%%G *" ".\%%G\"ex のようになりますMOVE ".\1 *" ".\1\"

  • コマンド内MOVE ".\%%G *" ".\%%G\":

    • 引用符は、パスにスペースが含まれている場合 (例".\%%G *") に技術的にのみ必要ですが、一貫性を保つためにソース パス ( .\%%G *) と宛先パス ( .\%%G\) の両方で使用されます。

    • .「現在のディレクトリ」を簡潔に表す方法です。

    • *はワイルドカードです。したがって、ex. は「 (例) で始まり、その後にスペースとその他の文字 ( )が続く.\%%G *現在のディレクトリ内の任意のファイル」と解釈されます。%%G1*


参考文献

関連情報