2012-02-14 5 views
0

多数のファイルをコピーするバッチファイルを作成しようとしています。ファイルを取り出し、そのファイル名に基づいて特定のフォルダに移動したいと考えています。バッチファイル内の変数としてのワイルドカードの内容の参照

例えば、私はこのようなディレクトリ構造を有する:

  • C:/
    • FolderA
      • File1.xyz
      • File2.xyz
    • folderBの
      • File3.xyz

私は彼らのファイル名に応じてフォルダにすべての* .xyzというファイルをコピーして、各探しバッチファイルを持っていると思います。したがって、上記のファイルは次のディレクトリにあります。

File1.xyzがDにコピーされます:/ FolderA/File1の /File1.xyz

File2.xyzがDにコピーされます:/ FolderA/File2の /File2.xyz

File3.xyzがDにコピーされます:/ folderBの/ FILE3 /File3.xyz

これはバッチファイルのFORループを使って可能になるはずですが、テキストをワイルドカードに置き換えて変数として使用する方法がわかりません(同じ名前のフォルダを作成できます)。/FOR

%%~D Expands to a Drive letter only. 
%%~P Expands to a Path only, including an ending backslash. 
%%~N Expands to the Name only. 
%%~X Expands to the eXtension only. 

タイプ:)変数修飾子FOR

答えて

1
for /R C:\ %%f in (*.xyz) do (
    if not exist D:%%~Pf%%~Nf md D:%%~Pf%%~Nf 
    copy %%f D:%%~Pf%%~Nf/%%~NXf 
) 

ザ・あなたが必要とする情報を与えますか?詳細については、

おそらく、あなたが最初のディレクトリ構造をコピーする必要があります。

XCOPY C:\ D:\ /T 
+0

は、FORループの本体ですべてのパスの前後に引用符を入れてよさそうだが、最高。それ以外の場合は、パス内のスペースや特殊文字に問題があります。また、その名前のファイルがすでに存在する場合は、IFとCOPY文の\に宛先を追加する方が安全かもしれません。 MDは必要に応じて中間ディレクトリを作成するため、XCOPYは必要ありません。 – dbenham

+0

これは私の質問に答えました。私は引用符で問題が発生したので、私はそれらを追加しました。皆さん、どうもありがとうございました。 –

関連する問題