Copie archivos al directorio cuando no conozco la ruta completa

Copie archivos al directorio cuando no conozco la ruta completa

Tengo una aplicación que genera un directorio con algunos archivos cuando se abre. Me gustaría acceder a algunos archivos en este directorio para exportarlos y también importarlos a este directorio. La estructura del directorio se ve así:

+ Folder I know
   + Auto Generated Folder         'Name changes every time
      -SomeFile
      -SomeFile2
      +macro
         -macro1
         -macro2
         -macro3

Quiero trabajar solo con los archivos del subdirectorio 'macro'. Tengo una solución de exportación que funciona usando el comando 'para' que mira la 'Carpeta que conozco' y hace una coincidencia:

 for /R "C:\Folder I know\" %f in ("macro*") do @xcopy "%f" "destination path" /u /y

El modificador /u del comando xcopy incluso me permite actualizar solo los archivos que ya existen en el destino. Ahora la pregunta es ¿cómo hago lo mismo pero al revés? Quiero copiar archivos de una carpeta (digamos c:\temp) y actualizarlos en la carpeta de macros sólo si ya están allí.

Respuesta1

No estoy muy seguro de entender exactamente qué es lo que está intentando hacer, pero parece que la %CD%variable de entorno podría ser útil. Esta variable realiza un seguimiento del directorio de trabajo actual, incluida la letra de unidad y la ruta completa. Aquí hay una captura de pantalla en acción.

ingrese la descripción de la imagen aquí

Conociendo esa variable, puede usarla en scripts en la medida que le resulte útil. En su caso particular, parece que tendrá que copiar su script en la carpeta de macros cada vez que se genera y ejecutarlo desde allí.

La única forma de escribir un script que funcione externamente es si puede obtener cualquier variable que cree el programa para generar automáticamente el nombre de una carpeta. Alternativamente, si el nombre de la carpeta generada automáticamente sigue algún tipo de convención que pueda hacer coincidir con un patrón, probablemente haya algunas opciones que incluyan declaraciones IF, expresiones regulares y comandos de cadena que podrían funcionar para usted.

Respuesta2

Después de pensar y probar un poco más, encontré una solución.

FOR /R "C:\Folder I know\" %f IN ("*") DO @xcopy "network path\%~nf" "%~pf" /e /u /y

El comando for todavía solo mira cada archivo en la carpeta que conozco, incluidos los subdirectorios que no conozco. Luego realiza una copia x utilizando la ruta de red donde se realiza la copia de seguridad de los archivos. Lo %~nfque se agrega al final obtiene el nombre del archivo actual del comando for. Luego lo copia en la carpeta local usando el %~pfcual obtiene la ruta del archivo actual del comando for.

información relacionada