Existem várias maneiras de copiar arquivos do mesmo diretório que o próprio arquivo em lote. Aqui estão alguns exemplos, demonstrando diferentes cenários e robustez:
Método 1:Usando `%~ dp0` (mais simples e mais recomendado) Este método usa a variável `%~ dp0`, que se expande para a unidade e o caminho do arquivo em lote atual. Esta é a abordagem mais confiável e recomendada.
`` `lote
@echo off
cópia "%~ dp0myfile.txt" "%~ dp0DestinationFolder \ myfile.txt"
`` `
* `%~ dp0`:recebe a unidade e o caminho do arquivo em lote.
* `myfile.txt`:o arquivo que você deseja copiar. Substitua isso pelo seu nome de arquivo real.
* `DestinationFolder`:o nome da pasta onde você deseja copiar o arquivo. Crie esta pasta com antecedência se não existir. Você também pode usar caminhos absolutos aqui, se necessário.
Método 2:usando `cd` (menos robusto) Este método altera o diretório para a localização do arquivo em lote antes de executar a cópia. É menos robusto porque se baseia no conjunto de diretório de trabalho atual definido corretamente.
`` `lote
@echo off
pushd "%~ dp0"
copie myfile.txt de destino \ myfile.txt
popd
`` `
* `pushd"%~ dp0 "`:altera o diretório para a localização do arquivo em lote. `pushd` salva o diretório atual, permitindo restaurá -lo mais tarde.
* `popd`:restaura o diretório original.
Método 3:Espaços de manuseio em caminhos de arquivo (crucial para a robustez) Se seus nomes de arquivos ou caminhos da pasta contiverem espaços, você deve * citá -los. Os exemplos acima já fazem isso, mas vale a pena enfatizar. A falha na citação levará a erros.
Exemplo com espaços:
`` `lote
@echo off
cópia "%~ dp0my file.txt" "%~ DP0Destination Paster \ my File.txt"
`` `
Método 4:copiando vários arquivos usando cards wildcards Você pode usar curingas para copiar vários arquivos de uma só vez:
`` `lote
@echo off
cópia "%~ dp0*.txt" "%~ dp0DestinationFolder \"
`` `
Isso copia todos os arquivos `.txt` do diretório do arquivo em lote para a` destino de destino '.
Manipulação de erros (importante) Para scripts mais robustos, adicione o tratamento de erros para verificar se a cópia foi bem -sucedida:
`` `lote
@echo off
cópia "%~ dp0myfile.txt" "%~ dp0DestinationFolder \ myfile.txt"> nul 2> &1
Se % errorLevel % ==0 (
arquivo de eco copiado com sucesso.
) outro (
ECHO ERRO ERRO COPYING FILE. Código de erro:%ErrorLEvel %
)
`` `
* `> NUL 2> &1`:suprime a saída do comando` cópia`.
* `Se % errorLevel % ==0`:verifica o nível de erro. `0` significa sucesso.
Lembre -se de substituir `" myfile.txt "`, `` `destinationfolder" `e outros espaços reservados com seus nomes de arquivo e pastas reais. Sempre teste seus arquivos em lote. Lidar incorretamente espaços em nomes de arquivos e caminhos é uma fonte comum de erros.