CMD ou BAT para copiar / substituir arquivos de um caminho relativo para um local de destino .lnk

1

Exemplo:

Eu terei o seguinte:

  • Pasta que contém:

    1. O arquivo CMD ou BAT
    2. o arquivo / arquivos precisaram ser copiados (Ex: file1.exe e file2.exe)
  • Um .lnk localizado na área de trabalho (Ex .: C: \ Users \ Home \ Desktop \ Example.lnk) que é um atalho para (EX: D: \ folder \ Example.pdf)

Eu preciso do arquivo CMD / BAT para copiar file1.exe e file2.exe de seu local relativo atual e colar ou colar / substituí-los no local de destino .lnk depois de lê-lo, que é D: \ folder \

Editar

Eu tentei o seguinte para substituir gravity.pdf por outra versão do gravity.pdf localizada na mesma pasta do comando bat:

@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in ('type "C:\Users\Abdo\Desktop\Gravity.lnk ^| find "\" ^| findstr/b "[a-z][:][\]"') do (
  set _targetdir=%%~dpi
  )
rem copy the files
copy /y Gravity.pdf %_target%
endlocal

mas um erro vem "a sintaxe do comando está incorreta."

Eu estou tentando entender o código, não posso obter como% _target% irá referenciar o caminho completo do alvo do gravity.lnk que no meu caso agora é D: \ Books \

Editar 2

Eu removi algumas linhas inseridas do código e agora uma janela preta cmd vazia é aberta, mas nada muda:

código:

@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in ('type "C:\Users\Abdo\Desktop\Gravity.lnk ^| find "\" ^| findstr/b "[a-z][:][\]"') do (set _targetdir=%%~dpi)
rem copy the files
copy /y Gravity.pdf %_target%
endlocal
    
por thelordabdo 07.05.2016 / 23:48

1 resposta

1

Como copio / substituo arquivos de um caminho relativo para um local de destino .lnk?

Use o seguinte arquivo em lotes:

@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in ('type "C:\Users\Home\Desktop\Example.lnk" ^| find "\" ^| findstr/b "[a-z][:][\]"') do (
  set _targetdir=%%~dpi
  )
rem copy the files
copy /y file1.exe %_targetdir%
copy /y file2.exe %_targetdir%
endlocal

Meu código dá um erro "a sintaxe do comando está incorreta".

  • Você está perdendo o " após lnk no comando for .

  • %_target% deve ser %_targetdir% (isso foi um erro no meu arquivo de lote - agora corrigido).

Aqui está a versão corrigida do seu arquivo de lote:

@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in ('type "C:\Users\Abdo\Desktop\Gravity.lnk" ^| find "\" ^| findstr/b "[a-z][:][\]"') do (
  set _targetdir=%%~dpi
  )
rem copy the files
copy /y Gravity.pdf %_targetdir%
endlocal

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • find - Procure uma string de texto em um arquivo & exibir todas as linhas onde ele é encontrado.
  • findstr - Pesquise strings em arquivos.
  • parâmetros - Um argumento de linha de comando (ou parâmetro) é qualquer valor passado para um script em lote.
  • definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.
  • tipo - Exibe o conteúdo de um ou mais arquivos de texto.
  • para / f - Comando Loop contra os resultados de outro comando.
por 08.05.2016 / 00:18