2011-07-21 13 views
3

私はディレクトリc:/ goを持っています。そこにはたくさんのフォルダ、サブフォルダ、ファイルがあります。バッチを使用してファイルとフォルダを別のパスにコピーする

私はネット* .INFおよびOEM * .INFで始まるファイル、内部に行く見つける必要がある、とフォルダ、サブフォルダと、彼らはCで別のpalceにあるすべてのファイルをコピー:/

それはしなければなりませんバッチスクリプト、C++、PythonなどのWindowsを使用して自動的に何か...ただ%%i%iを置き換えるバッチファイルで

for /D %i in (net oem) do xcopy /s c:\go\%i*.inf c:\go2\ 

:コマンドラインから事前

答えて

4

でのおかげで、一つの方法は、for loopxcopyを組み合わせることです。

+0

ありがとうございます!私は私の頭を壊していたので、簡単なコードになってしまいました...私はc:go/go2にコピーしてエラーを出しました。 ...私はその内部のソースフォルダ...任意のアイデアですか? – masaki

+0

また、コードはinfと彼のそれぞれのフォルダをコピーしますが、 同じ フォルダ内に他のファイルをダウンロードする方法はありますか? – masaki

+0

@masaki:上記のように、c:\ go \からc:\ go2 \にコピーし、c:\ go2 \をc:\ go \の下に移動します。あなたの2番目のコメントでは、 "同じフォルダの中の他のファイル"が何を意味するのか分かりません。他のファイルは? – ars

2

@arsの回答のxcopy手法は、あなたの状況に合わせて明らかに簡単です。しかし、以下はPythonの実装です。これは、ターゲットディレクトリがあることを確認し、そうでない場合は、それを作成します。あなたはこの道を行くにしたい場合は

#!python 
import os 
import re 
import shutil 

def parse_dir(src_top, dest_top): 
    re1 = re.compile("net.*\.inf") 
    re2 = re.compile("oem.*\.inf") 
    for dir_path, dir_names, file_names in os.walk(src_top): 
     for file_name in file_names: 
      if re.match(re1, file_name) or re.match(re2, file_name): 
       target_dir = dir_path.replace(src_top, dest_top, 1) 
       if not os.path.exists(target_dir): 
        os.mkdir(target_dir) 
       src_file = os.path.join(dir_path, file_name) 
       dest_file = os.path.join(target_dir, file_name) 
       shutil.copyfile(src_file, dest_file) 

src_top = "\\go" 
dest_top = "\\dest" 

parse_dir(src_top, dest_top) 

の改善は、おそらく可能ですが、これはあなたが始める必要があります。

+0

条件付きディレクトリの作成は、一行で簡単にバッチに改造することができます。 – Joey

+0

@Joey:はい、それはarsの答えに対する私の言及の一部でした。私はこれを代わりに提供しています...また、* nixプラットフォームでも動作するはずです(Windowsでは動作する/へのパス区切りのマイナーチェンジを行いますが、\を使用して、似ている ")。 – GreenMatt

+0

私も本当に感謝しています...また wirh putjonコードを試します – masaki

関連する問題