Hallo Leuts
Ich habe ein kleines Problem mit einer Batch Datei
Dieses Script ins nämlich für Folgende Situation gedacht:
Aus einem Webshop werden die gewünschten Bilder für einen Druck im FTP
Verzeichniss des Webservers gespeichert. Damit der Speicher des Servers
nicht unter den ganzen Bilder zuneige geht sollen die Bilder vom FTP
Server geladen und anschließend gelöscht werden. Momentan würde es so
laufen, dass es alle Bilder runter läd und danach erst die Bilder
löscht. (Erst Script 1, danach Script 2 starten)Da aber in der Zeit wo
die Bilder runtergeladen werden schon wieder neuen Bilder eingesendet
werden, würden die neu eingesendeten Bilder gleich mitgelöscht werden.
Habe bereits was gutes gefunde, was auch fast den Zweck erfüllt:
[quote=Dostips]This batch connects twice to the FTP server. First time
it retrieves a list of files on the FTP server. This list is being
trimmed to contain only files that don`t already exist locally. The
files in the trimmed list are then downloaded during a second
connection. Note: Since all files are passed into the FTP`s MGET command
there might be a limit to the number of files that can be processed at
once.
[/quote]
1
@Echo Off
2
3
REM -- Define File Filter, i.e. files with extension .png
if "%src%"=="" set src=%~f0& rem if no source file then assume THIS file
48
for /f "tokens=1,* delims=]" %%A in ('find /n /v "" "%src%"') do (
49
if /i "%%B"=="%emk%" set "bExtr="&set "bSubs="
50
if defined bExtr if defined bSubs (call echo.%%B) ELSE (echo.%%B)
51
if /i "%%B"=="%bmk%" set "bExtr=Y"
52
if /i "%%B"=="%bmk%:S" set "bExtr=Y"&set "bSubs=Y"
53
)
54
EXIT /b
55
56
57
[Ftp Script 1]:S
58
!Title Connecting...
59
open [Server]
60
[user]
61
[password]
62
63
!Title Preparing...
64
65
lcd c:\test
66
binary
67
hash
68
69
!Title Processing... %FtpCommand%
70
%FtpCommand%
71
72
!Title Disconnecting...
73
disconnect
74
bye
Um die Datein jetzt zu löschen habe ich eine 2. Batch erstellt inder ich
den Befehl MGET in MDEL umgeschrieben habe.
Gibt es da ne Möglichkeit den MDEL befehl in die 1. Batch mit reinzu
nehmen, damit alles mit einer Batch erledigt wird ?
mfg
(Code von dostips.com)
Hallo icke,
> Gibt es da ne Möglichkeit den MDEL befehl in die 1. Batch mit reinzu> nehmen, damit alles mit einer Batch erledigt wird ?
hmm, dunkel kann ich mich an einem "CALL XXX.BAT" erinnern :-)
Bye
Andi
Hmm soweit schnonmal danke, ist aber noch nicht ganz was ich brauche..
Also es soll so sein, dass es die datei downloaded und anschließend
gleich löscht.. und dann immer wieder im wechsel bis alle geladen sind.
Statt die Datei zu löschen, schau sie dir doch mal an...
Wenn ich das richtig sehe wird dort die Liste der FTP Befehle die
ausgeführt werden soll erstellt.
Bei der Erstellung dieser Datei müsstest du nun das Skript so
modifizieren das es neben dem GET auch gleich ein DEL absetzt.
Das "rem" hier wegnehmen dann sollte er dir die in notepad öffnen.
Rem Notepad "%temp%\%~n0.ftp"
Ansosnten im durch die Umgegbungsvariable %temp% bezeichnetem
Verzeichnis
Mach mal im zweiten, kopierten Abschnit aus dem '>' ein '>>'. Sonst
überschreibst Du den ersten Abschnitt mit dem mget wieder.
Call:extractFileSection "[Ftp Script 1]" "-">>"%temp%\%~n0.ftp"
Ah, OK.
Nach den Zeilen mit mget steht ja schon das diconnect im ftp-Script,
dann kann er die Files natürlich nicht mehr löschen :(
Erzeug am besten zwei Sripts. Also so etwa:
1
Set "FtpCommand=mget"
2
For %%A In (%FileList%) Do If Not Exist "%%~A" Call Set "FtpCommand=%%FtpCommand%% "%%~A""
Danke schonma für die ganzen tipps
Ih habe aber noch eine kleine Sache:
Ist es möglich Dateinamen auszulesen und die dann Anhand des Namens in
verschiedene Ordner zu kopieren ? Ich denke ich erkläre es am besten mal
mit einem Bespiel:
Ich habe Datei: xyz_001.txt Die 001 Steht dafür, wie oft die Datei
gedruckt werden soll. Kann man es so machen, dass er alle Datein die am
Ende >1 sind in einen andren ordner kopiert mit den namen sonder (bsp)
und die <1 in einen anderen ordner ?
Am besten wäre noch, das man die Datei so oft kopiert wie es am ende
steht alo bei xyz_003.txt, die datei ingesamt 3 mal im ordner vohanden
ist
MFG
Mit DOS-Batch-Mitteln weiß ich nicht, ob es geht.
Mit den Unix-Kommandos geht sowas (mv, sed etc.).
Die gibt es auch für Windows, inkl. bash. Damit geht es dann sicher
deutlich einfacher.
(Daß damit alles bisher Gebaute wahrscheinlich auch gleich einfacher
gewesen wäre, erwähne ich jetzt besser nicht.)
icke schrieb:> Leider kenn ich mich mit Unix kein Stück aus..
Leider haben wir keine Zeit/Lust/... für dich die einfachste Lösung zu
suchen.
Wenn man etwas möchte, dann muß man meistens halt doch etwas selbst
dafür tun. Und zum Thema batch Verarbeitung gibt es nun auch Millionen
Websites, wenn du ihrgeneine Programmiersprache kannst könntest du dir
die Kommandodatei auch nach deinen wünsche zusammenstellen...
Nur immer hier warten, bis man dir die Lösung vorwirft wird dich
vermutlich auf Dauer nicht ans Ziel bringen.