O comando ftp
parece não suportar variáveis de ambiente ; considere a criação do script FTP em tempo real. Aqui está um script de exemplo, principalmente emprestado de DosTips :
;@echo off
;(for /f "usebackq delims=" %%A in ("%~f0") do call echo.%%A)>"%temp%\%~n0.ftp"
;ftp -i -s:"%temp%\%~n0.ftp"
;goto:EOF
open example.com
username
password
!:--- FTP commands below here ---
prompt
bin
mput %userprofile%\importantfiles
Observação Use %userprofile%
em vez de construir o caminho sozinho, porque há coisas diferentes que podem dar errado:
- Você tem erros de digitação, por exemplo
C:\User
em vez deC:\Users
. - O nome da pasta não corresponde ao nome da conta do usuário.
- O Windows não está instalado na unidade / partição
C:
.
Como funciona
This batch executed the FTP script embedded within the batch. All variables in the FTP script will be resolved.
The FOR loop extracts the FTP script into a temporary file. It the ECHO command is being CALLed for each line in order to resolve the variables.
Variables can be used within the FTP script the same way as in a batch script, including any string manipulation and command line arguments like
%1
%2
%~n0
%*
and so on.All batch lines start with semicolon so that they will be ignored by the FOR loop. Semicolon is the default end-of-line (EOL) character used by the FOR command.