копировать файлы и папки по другому пути с помощью пакета - PullRequest
3 голосов
/ 21 июля 2011

У меня есть каталог c: / go, внутри go есть тонны папок, подпапок и файлов.

Мне нужно найти внутри go файлы, которые начинаются с net * .inf и oem * .infи скопируйте папку, подпапки и все файлы, где они находятся, в другое место в c: /

Это должно быть что-то автоматическое с использованием Windows ... как пакетный скрипт, C ++, Python ... VBS пожалуйста!заранее спасибо

Ответы [ 2 ]

4 голосов
/ 21 июля 2011

Из командной строки можно объединить xcopy с для цикла :

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

В пакетном файле просто заменить %i на%%i.

2 голосов
/ 21 июля 2011

Техника xcopy в ответе @ars, очевидно, проще для вашей ситуации, если она вам подходит.Однако ниже приведена реализация 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)

Возможно, улучшения возможны, но это должно помочь вам начать, если вы хотите пойти по этому пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...