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óslnk
no comandofor
. -
%_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.