Copiar arquivos para o diretório quando não souber o caminho inteiro

Copiar arquivos para o diretório quando não souber o caminho inteiro

Eu tenho um aplicativo que gera um diretório com alguns arquivos quando é aberto. Gostaria de acessar alguns arquivos deste diretório para exportá-los e também importar para este diretório. A estrutura de diretórios é semelhante a esta:

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

Quero trabalhar apenas com os arquivos do subdiretório 'macro'. Eu tenho uma solução de exportação funcional usando o comando 'for' que olha para a 'Pasta que eu conheço' e faz uma correspondência:

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

A opção /u no comando xcopy me permite atualizar apenas arquivos que já existem no destino. Agora a questão é: como faço a mesma coisa, mas ao contrário? Quero copiar arquivos de uma pasta (digamos c:\temp) e atualizá-los na pasta macro somente se eles já estiverem lá.

Responder1

Não tenho certeza se entendi exatamente o que você está tentando fazer, mas parece que a %CD%variável de ambiente pode ser útil. Esta variável controla o diretório de trabalho atual, incluindo a letra da unidade e o caminho completo. Aqui está uma captura de tela dele em ação.

insira a descrição da imagem aqui

Conhecendo essa variável, você pode usá-la em scripts na medida que achar útil. No seu caso específico, parece que você precisa copiar seu script para a pasta macro sempre que ele for gerado e executá-lo a partir daí.

A única maneira de escrever um script que funcione externamente é se você conseguir obter qualquer variável que o programa crie para gerar automaticamente o nome de uma pasta. Como alternativa, se o nome da pasta gerado automaticamente seguir algum tipo de convenção que você possa corresponder a um padrão, provavelmente existem algumas opções envolvendo instruções IF, RegExes e comandos de string que podem funcionar para você.

Responder2

Depois de mais pensar e testar, encontrei uma solução.

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

O comando for ainda analisa apenas cada arquivo da pasta que conheço, incluindo os subdiretórios que não conheço. Em seguida, ele faz um xcopy usando o caminho de rede onde foi feito backup dos arquivos. O %~nfanexado ao final obtém o nome do arquivo atual do comando for. Em seguida, ele o copia para a pasta local usando %~pfo comando for.

informação relacionada