
Tengo una lista de 200 nombres de archivos. Necesito encontrar estos archivos, que se encuentran en diferentes subcarpetas, por su nombre de archivo y copiarlos en una carpeta separada. Estoy usando Windows 7. ¿Cómo hago eso?
Gracias, natalia
Respuesta1
Mi sugerencia es ir a Ninite.com y descargar la herramienta gratuita llamada "Everything". Es una sencilla herramienta de búsqueda de Windows. Después de la instalación, espere unos 5 minutos para indexar sus archivos.
En el campo de búsqueda, escriba el término de búsqueda y obtendrá resultados instantáneos, como lo hace en Google. Al ver los resultados, podrá manipular los archivos directamente en la ventana de búsqueda de Everything, como puede hacerlo en el explorador de Windows. Puede 'seleccionar todo' y luego copiarlos, y luego en Win Explorer ir a la carpeta donde los desea y pegarlos.
Todo es una herramienta realmente buena. Ni siquiera necesita escribir el nombre de archivo completo, solo una parte, por ejemplo, 'eag mp3' devolverá todos los MP3 con 'eag' en el nombre de archivo, como 'eagles - nombre de la canción.mp3'.
Respuesta2
Aquí tienes. Primero haz el ensayo. Lea los comentarios atentamente.
El archivo fullfilenames.txt persistirá para que tenga un registro de cada archivo encontrado. Si necesita ejecutar esto más de una vez y desea conservar el archivo, muévalo o cámbiele el nombre.
Se creará un archivo de registro 'movelog.txt'. Como se indicó anteriormente, muévalo o cámbiele el nombre si desea conservarlo después de cada ejecución.
# 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
}
Nota: Este es un script de PowerShell. Guárdelo como cualquier.ps1 y ejecútelo en la consola de PowerShell.
Disfrutar
Respuesta3
Puedes buscar una lista de archivos en "Todo" delimitando con |
.
Por ejemplo:file1|file2|file3|file4
Enlace para descargar "Todo":https://www.voidtools.com/downloads/