我有 200 个文件名的列表。我需要根据文件名找到位于不同子文件夹中的这些文件,并将它们复制到一个单独的文件夹中。我使用的是 Windows 7。我该怎么做?
谢谢,娜塔莉亚
答案1
我的建议是访问 Ninite.com,下载名为“Everything”的免费软件工具。它是一个简单的 Windows 搜索工具。安装后,等待 5 分钟左右即可索引您的文件。
在搜索字段中输入搜索词,您将立即获得结果,就像在 Google 上一样。看到结果后,您可以直接在 Everything 搜索窗口中操作文件,就像在 Windows 资源管理器中一样。您可以“全选”然后复制它们,然后在 Win Explorer 中转到您想要的文件夹并粘贴它们。
Everything 是一款非常棒的工具。您甚至不需要输入整个文件名,只需输入其中的一部分即可,例如“eag mp3”将返回文件名中带有“eag”的所有 MP3,例如“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 脚本。将其保存为 whatever.ps1 并在 PowerShell 控制台中运行它。
享受
答案3
您可以在“Everything”中通过 分隔来搜索文件列表|
。
例如:file1|file2|file3|file4
《一切》的下载链接:https://www.voidtools.com/downloads/