
У меня есть список из 200 имен файлов. Мне нужно найти эти файлы, которые находятся в разных подпапках, по их имени и скопировать их в одну отдельную папку. Я использую Windows 7. Как это сделать?
Спасибо, Наталья.
решение1
Я предлагаю зайти на Ninite.com и скачать бесплатный инструмент под названием "Everything". Это простой инструмент поиска Windows. После установки дайте ему около 5 минут, чтобы проиндексировать ваши файлы.
В поле поиска введите ваш поисковый запрос, и вы получите мгновенные результаты, как вы это делаете в Google. Увидев результаты, вы можете управлять файлами непосредственно в окне поиска Everything, например, как вы можете это сделать в проводнике Windows. Вы можете «выбрать все», а затем скопировать их, а затем в проводнике Windows перейти в нужную папку и вставить их.
Everything - действительно хороший инструмент. Вам даже не нужно вводить полное имя файла, только его часть, например, 'eag mp3' вернет все MP3 с 'eag' в имени файла, например, 'eagles - song name.mp3'
решение2
Вот так. Сначала проведите пробный прогон. Внимательно прочитайте комментарии.
Файл fullfilenames.txt сохранится, так что у вас будет запись каждого найденного файла. Если вам нужно запустить это больше одного раза и вы хотите сохранить файл, переместите или переименуйте его.
Будет создан файл журнала 'movelog.txt'. Как и выше, переместите или переименуйте его, если хотите сохранить его после каждого запуска.
# Set your search directory and destination directory
$destdir = "[destination for files]"
$searchdir = "[top dir of search path]"
# Create empty file to contain the full path info for each file
echo $null > fullfilenames.txt
# Create array from your list of filenames
$filenames = Get-Content filenames.txt
# For each file in array of filenames get fullpath and assign var $fullname
foreach ($file in $filenames) {
$fullname = Get-ChildItem $searchdir | Where-Object {$_.PSIsContainer -eq $False -and ($_.Name) -eq $file} | ForEach-Object {$_.FullName}
# Add full path of file to fullfilenames.txt
echo $fullname >> fullfilenames.txt
# Uncomment next two lines for troubleshooting & dry run
#echo $file
#Write-Host $fullname
}
# Create array from new list of files with full path info and then move each file to destination.
# For troubleshooting & dry run, comment out following two lines.
$filenames = Get-Content fullfilenames.txt
echo $null > movelog.txt
foreach ( $file in $filenames ) {
Move-Item $file $destdir
# Log success/fail of each move
echo "$(Get-Date -f o) $? $file" >> movelog.txt
}
Примечание: Это скрипт PowerShell. Сохраните его как anything.ps1 и запустите в консоли PowerShell.
Наслаждаться
решение3
Вы можете выполнить поиск по списку файлов в разделе «Все», разделив их символом |
.
Например:file1|file2|file3|file4
Ссылка для скачивания "Всё":https://www.voidtools.com/downloads/