2016-07-02 15 views

Antwort

0

ftp versteht Windows-Umgebungsvariablen nicht. Sie müssen Sie Skript jedes Mal, wie diese Datei erzeugen:

set file=test 
set ftpscript=%TEMP%\ftp.txt 
echo user> %ftpscript% 
echo password>> %ftpscript% 
echo get %file%>> %ftpscript% 
echo quit>> %ftpscript% 
ftp -s:%ftpscript% IP  

Hier habe ich ein temporäres Skript im temporären Verzeichnis definiert, damit es nicht aktuelles Verzeichnis nicht verschmutzen.

0

ein Beispiel dieser für mutiple Hochladen von Dateien:

@echo off 
Title Multiple file Upload by Hackoo on adrive 
Color 0A 
::****** Settings for FTP ************ 
Set FTPSERVER=ftp.adrive.com 
Set USER=Your Login 
Set Password=Your Password 
Set LocalFolder=C:\Hackoo 
Set RemoteFolder=/backupFolder 
::************************************ 
::--- FTP commands below here --- 
> ft.do echo Open %FTPSERVER% 
>> ft.do echo %USER% 
>> ft.do echo %Password% 
>> ft.do echo prompt n 
>> ft.do echo bin 
>> ft.do echo lcd %LocalFolder% 
>> ft.do echo MkDir %RemoteFolder% 
>> ft.do echo cd %RemoteFolder% 
>> ft.do echo mput "*.*" 
>> ft.do echo disconnect 
>> ft.do echo bye 
::************************************ 
ftp -s:ft.do 
del ft.do 
Pause 

Dies ist ein Beispiel in Batch nur zum Testen, die nur Dateien aus einem Ordner auf einen öffentlichen FTP-Server wie ftp.microsoft.com befindet Liste kann in Um eine list.txt-Datei zu erstellen, um sie nachher herunterzuladen, versuchen Sie es und teilen Sie uns das Ergebnis mit.

@echo off 
mode con cols=85 lines=22 & Color A 
::*********************************** 
Set FTPSERVER=ftp.microsoft.com 
Title Lister les fichiers et les dossiers sur un serveur FTP (%FTPSERVER%) by Hackoo 
Set USER=anonymous 
Set [email protected] 
Set DossierFTP=/bussys/winsock/winsock2/ 
Set DownloadFolder=winsock2 
::******************************************************* 
Goto Lister 
:Lister 
> ft.do echo Open %FTPSERVER% 
>> ft.do echo %USER% 
>> ft.do echo %Password% 
>> ft.do echo prompt n 
>> ft.do echo bin 
>> ft.do echo cd %DossierFTP% 
>> ft.do echo ls -h TLIST.txt 
>> ft.do echo bye 
ftp -s:ft.do 
del ft.do 
CLS 
Color 9B 
echo Download la liste 
pause 
Goto Download 
::********************************************************* 
:Download 
> ft.do echo Open %FTPSERVER% 
>> ft.do echo %USER% 
>> ft.do echo %Password% 
>> ft.do echo prompt n 
>> ft.do echo bin 
>> ft.do echo cd %DossierFTP% 
for /F %%f in (TLIST.txt) do (>> ft.do echo get %%f) 
>> ft.do echo bye 
ftp -s:ft.do 
del ft.do 
CLS 
Color 9A 
pause 
echo Deplacer la liste 
Goto Deplacer 
::********************************************************* 
:Deplacer 
Set Source=%~dp0 
Set Destination=%Source%%DownloadFolder% 
if not exist %DownloadFolder% MD %DownloadFolder% 
for /F %%f in (TLIST.txt) do (move "%Source%%%f" "%Destination%") 
pause 
0

Der Grund für das% -artifact nicht war in der BAT-Datei nicht funktionierte, dass das Token nie gesehen und ersetzt wurde. Genau wie in einem UNIX-Shell-Skript werden $ -substitutions ausgeführt, wenn diese Zeilen gesammelt und in Token umgewandelt werden. Da die Zeile, die die Datei% enthält, in FTP eingegeben wurde, wurde sie von FTP und nicht von der DOS-Shell gesammelt und analysiert.

In UNIX können Sie dieses Problem lösen, indem Sie die Anweisungen über FTP leiten. Das heißt, während diese (wobei $ 1 a Dateiname Parameter in der Befehlszeile geliefert wird):

ftp << FTP_CMDS 
user joe 
pass joesPassword 
get $1 
quit 
FTP_CMDS 

würde nicht funktionieren, THIS:

(echo user joe; 
&nbsp;echo pass joesPassword; 
&nbsp;echo get $1; 
&nbsp;echo quit) | ftp 

funktionieren würde.