dpole86
Goto Top

Per ftp dateien mit einem bestimmten anfang löschen

ich bin noch azubi^^

Guten Morgen zusammen..


Ich habe folgendes Problem:

Ich würde gerne per script eine bestimmte Datei aus einem FTP verzeichnis löschen. Leider weiß ich nciht wie ich das bewerkstelligen soll.

Folgendes im Detail.


User meldet sich an :


Script schreibt eine Datei mit %host%__%username%.txt

diese Datei wird per ftp auf den Server hochgeladen.


beim abmelden wird die datei %host%__%username%.txt gelöscht
und durch %host%.txt "ersetzt"
diese wird dann auch wieder auf den Server hochgeladen.

Allerdings habe ich dann auf dem Server 2 Dateien:

%host%__%username%.txt
%host%.txt

Da ich dies auf mehreren VMs ausführen möchte, kann ich nicht einfach
nach dem namen der Datei suchen...

ich muss es als Parameter übergeben

der code in welchen ich den Hostnamen speicher sieht so aus:

hostname.exe > __t.tmp
SET /p host=<__t.tmp

dann habe ich den Parameter in der Variable %host%


und nun komm ich zum Problem

per FTP kann ich nicht nach:

delete %host%*.txt löschen

oder geht des doch?

Content-Key: 194860

Url: https://administrator.de/contentid/194860

Printed on: April 19, 2024 at 20:04 o'clock

Member: rubberman
rubberman Nov 25, 2012 updated at 15:17:24 (UTC)
Goto Top
Hallo Dpole86.

Als erstes wirst du vermutlich mit deiner hostname.exe wieder ohne temporäre Datei auskommen, á la
for /f "delims=" %%i in ('hostname.exe') do set "host=%%i"

Aber das beantwortet nicht deine Frage.
(Davon ausgehend dass du mit dem Windows FTP Tool arbeiten willst ...) Du musst strikt zwischen Batch und dem FTP-Script unterscheiden. Im FTP-Script werden Umgebungsvariablen nicht expandiert, sondern als literaler Ausdruck angenommen. Das heißt, wenn du mit Variablen arbeiten willst/musst, dann musst du per Batch ein FTP-Script erstellen, bei dem, während der Umleitung in das Script, Umgebungsvariablen zum Wert expandiert werden.
Das Ganze könnte etwa so aussehen (ungetestet):
@echo off &setlocal
for /f "delims=" %%i in ('hostname.exe') do set "host=%%i"  
set "ftpUser=..."  
set "ftpPassword=..."  
set "ftpRemoteDir=..."  

>"test.ftp" (  
  echo open %host%
  echo %ftpUser%
  echo %ftpPassword%
  echo cd "%ftpRemoteDir%"  
  echo delete "%host%*.txt"  
  echo disconnect
  echo bye
)

ftp -i -s:"test.ftp"  
:: del "test.ftp" 
Versteht sich, dass du die Pünktchen durch reale Werte ersetzen musst. Ob du ftpRemoteDir (und das zugehöride cd) benötigst, musst du selbst wissen.

Grüße
rubberman

[OT]
Guten Morgen zusammen..
... um 13:06 Uhr
Zu der Sorte Menschen gehöre ich auch face-wink
[/OT]
Member: Dpole86
Dpole86 Nov 25, 2012 updated at 17:14:58 (UTC)
Goto Top
Hi rubberman

Warum startet bei mir wenn ich ftp in command eingebe, der Filezilla in der Kommandozeile?

Danke für die Mögliche Lösung face-smile

Sorry mein fehler
Es startet der Filezilla Server ^^ nciht der Client
Allerdings kann ich das Passwort nicht übergeben -.-
Member: rubberman
rubberman Nov 25, 2012 at 17:21:11 (UTC)
Goto Top
Hi Dpole86.

Keine Ahnung. Vermutlich hast du auf deinem Rechner eine weitere ftp.exe (oder ftp.bat oder eine andere ausführbare Datei namens ftp) und diese ist entweder im selben Verzeichnis oder befindet sich in der Path-Umgebung.

Rufe ftp.exe mal mit vollem Name auf:
%SystemRoot%\system32\ftp.exe

Grüße
rubberman
Member: Dpole86
Dpole86 Nov 25, 2012 at 18:54:21 (UTC)
Goto Top
Hat sich nun alles erledigt face-smile

habs hinbekommen^^

stehe aber nun vor einem neuen ungelösten problem..

eröffne dazu einen neuen thread.

Danke und Grüße