Как искать каталог и подкаталоги на основе текстового файла с частичными именами файлов и копировать эти файлы в новый каталог - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь найти в каталоге и подкаталогах файлы, перечисленные в текстовом файле, и скопировать их в новое место с помощью командного файла.Я могу заставить его работать, если я помещаю нужные мне файлы в основной каталог, но не могу найти его для поиска в подкаталогах.

@echo off
for /f "tokens=1,* delims=," %%j in (filelist.txt) do (
 for /r "E:\Source"  %%a in ("%%j") do (
    copy "%%a" "C:\Destination\%%k"
 )
)

Это работает, если я хочу только искать в папке «Source», но не могу искать какие-либо папки внутри папки «Source».Надеюсь, кто-то может сказать мне, что я скучаю.

Я новичок в этом, поэтому, пожалуйста, скажите мне, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 29 марта 2019

Это должно помочь вам начать работу, если вы решите использовать Powershell.

$files = 'C:\list.txt'
$location = 'C:\files\'
$destination = 'C:\destination\'

# for each filename in "list.txt", look for the file in C:\destination\, recursively
gc $files | % {
    write-host "looking for $_"

    $result = gci -Recurse $location $_

    if($result) {
        write-host -ForegroundColor Green "found $_ in $location!"
        write-host "copying $_ to $destination..."
        copy-item $result.FullName $destination\$_
    }
}

Результат будет выглядеть следующим образом:

enter image description here

Флаг -Recurse поможет вам решить проблемы с подкаталогами.

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

...