
Tengo un problema, que parece que¿Cómo eliminar archivos con texto específico en sus nombres?Eliminaría lo que no quiero que se elimine.
Debido a un problema con OneDrive después de instalar un disco duro interno adicional y mover mi carpeta OneDrive siguiendo las instrucciones enSoporte técnico de Microsoft, No sé qué hice mal, pero ahora tengo todos mis archivos copiados en mi nuevo disco duro y OneDrive se sincroniza con duplicados de cada archivo al - copy
final de cada nombre de archivo antes de la extensión. Se trata de gigabytes de datos en miles de archivos.
Al observar lo que se eliminaría si lo uso *- copy.*
en Powershell o cmd.exe, parece que un archivo que he creado (copy.bat) se eliminaría y quiero conservarlo.
¿Cómo usaría comodines para eliminar todo lo que está - copy
al final del nombre del archivo pero protegería archivos como copy.bat?
Respuesta1
Lo que está sucediendo en este momento es que se *- copy.*
está analizando como dos argumentos separados por espacios: *-
y copy.*
. Una vez que vea esto, será sencillo reconocer que el segundo de estos coincidirá con su copy.bat
archivo.
La solución es poner entre comillas dobles la parte invariante (específicamente, asegurándose de que el espacio esté dentro de las comillas dobles) *"- copy".*
:
DIR *"- copy".*
Get-ChildItem *"- copy".*
Dado que se trata de Windows, también puedes salirte con la tuya *
, ya que se analiza mediante el comando en lugar de la herramienta Powershell/CMD:
DIR "*- copy.*"
Get-ChildItem "*- copy.*"
Además, si tiene alguna intención de utilizar un sistema basado en UNIX/Linux (incluido un Mac), no se acostumbre a intentar citar un comodín y esperar que actúe como un patrón, porque no lo hará. t: se analizará como un asterisco literal. Mi primera sugerencia funcionará en todas partes. La segunda sugerencia es específica de Windows.
Respuesta2
No es necesario que el .bat
archivo esté en la misma carpeta que los archivos que se están eliminando. Puedes ejecutarlo desde otra carpeta ejecutando
\path\copy.bat
.
Si hay más archivos afectados además de copy.bat
, deberá copiarlos en otro lugar antes de ejecutar copy.bat
.
También puede usar en PowerShell expresiones regulares más sofisticadas que las primitivas que están disponibles en CMD. Luego puede refinar la expresión regular para incluir menos archivos, si puede definir mejor sus reglas de nomenclatura.
Respuesta3
Eche un vistazo a una útil herramienta gratuita: Bulk Renaming Utility.https://www.bulkrenameutility.co.uk
Puede escanear y obtener una vista previa de forma recursiva de tareas de cambio de nombre en masa y es extremadamente útil ya que tiene una vista previa. Tenga cuidado: primero debe realizar una copia de seguridad. Es una herramienta poderosa y no hay ninguna opción de deshacer después de la confirmación.