Avatar billede djondjoe Nybegynder
27. januar 2005 - 16:11 Der er 18 kommentarer og
1 løsning

DOS FTP, upload alt i en lokal folder

Jeg skal have lavet en .bat fil eller andet, der kan:

Uploade alle filer med extension .xml i en lokal folder til en folder på en ftp server. Alle skal uploades med extension .tmp
Efter endt upload skal de omdøbes tilbage til deres originale extension (.xml)

Nogen der har en ide til det?
Avatar billede Spotgun Seniormester
27. januar 2005 - 16:17 #1
Lad mig lige se om jeg har forstået det helt korrekt:

1. Gå ind i en lokal mappe og omdøb alle .xml filer til .tmp
2. Upload dem til en server
3. Omdøb filerne (lokalt) til at hedde .xml igen

Rigtigt forstået?
Avatar billede djondjoe Nybegynder
27. januar 2005 - 16:21 #2
Det er en mulighed, at man skal omdøbe dem i den lokale mappe først, hvis man ikke kan gøre det med put kommandoen. Men ja det er korrekt forstået, hvis du med punkt 3. mener, at de skal omdøbes til at hedde .xml når de er uploadet til FTP-serveren.
Avatar billede djondjoe Nybegynder
27. januar 2005 - 16:22 #3
Altså de uploadede filer, ikke de lokale. De lokale filer skal slettes når de er uploadet.
Avatar billede djondjoe Nybegynder
27. januar 2005 - 16:24 #4
Prøver lige igen :-)
3. skal være:

3. Omdøb filerne (dem der lige er uploadet til FTP-serveren) til at hedde .xml igen. De lokale filer, der er uploadet og som ligger i den lokale folder med extension .tmp skal slettes.
Avatar billede Spotgun Seniormester
27. januar 2005 - 16:25 #5
ok, så er jeg med... prøver lige at strikke noget sammen!
Avatar billede Spotgun Seniormester
27. januar 2005 - 16:35 #6
Er det okay hvis de lokale filer renames midlertidigt, eller er det nogle filer der løbende skrives til (f.eks. mens der uploades?).

Eller er det evt. okay at lave en kopi af xml-filerne lokalt (så kopien hedder .tmp) og uploade dem, hvis de slettes bagefter?
Avatar billede Spotgun Seniormester
27. januar 2005 - 16:36 #7
heh, se lige bort fra forrige besked... Havde misforstået noget andet igen hehe
Avatar billede djondjoe Nybegynder
27. januar 2005 - 16:42 #8
De lød da ellers valide nok dine spørgsmål. Ja de lokale filer må godt renames.
Det vigtige er bare at filerne bliver uploadet som .tmp, da de ellers vil blive opsnappet af et program på FTP-serveren inden de er færdigt uploadede. Dette program kigger på alle andre extensions end .tmp. Efter de er uploadet kan de så renames tilbage til .xml på serveren og programmet vil tage fat i dem. På den måde undgåes det, at filer bliver spist inden de er uploadet færdigt.
Avatar billede Spotgun Seniormester
27. januar 2005 - 16:50 #9
Ok - det ser dog ikke ud til at du kan klare det med dos-ftp alene. Men jeg har en løsning klar til dig lige om lidt...
Avatar billede Spotgun Seniormester
27. januar 2005 - 17:00 #10
Som sagt, jeg kan ikke klare det vha. DOS'ens indbyggede FTP, da den ikke er god til at rename mange filer på en gang (det kan måske lade sig gøre, men jeg kan ikke lige finde ud af hvilken kommando der skulle kunne klare det i hvert fald).

Men programmet PyroBatchFTP kan klare det hele for dig.
Du kan hente en trial her: http://www.emtec.com/cgi-local/download.cgi?what=PyroBatchFTP&link=pyrotrans/pyrobatchftp212.exe&ext=html

En registreret version koster lige knap 300 kr og kan købes online hos http://www.emtec.com

Men med det program i hånden kan du få den til at køre følgende script, som gør det du har brug for:

---------------------

Connect "10.0.0.2", "username", "password"
LocalChDir "C:\TEMP\xml"
ForEach local "*.xml" do "LocalRename '*.xml', '*.tmp'"
RemoteChDir "upload\xml"
Put "*.tmp"
ForEach local "*.tmp" do "LocalRename '*.tmp', '*.xml'"
ForEach remote "*.tmp" do "RemoteRename '*.tmp', '*.xml'"
Disconnect

-----------------

Det fede ved pyrobatch er at du kan scripte dig til alverdens ting, og også schedulere den til at køre scripts på bestemte tidspunkter. Jeg bruger programmet på mit arbejde til at uploade filer på bestemte tidspunkter på dagen, og det fungerer rigtigt godt...
Avatar billede djondjoe Nybegynder
27. januar 2005 - 19:48 #11
Mange tak for svaret. Vil teste det snarligst og forhåbentlig give dig point. Det ser i hvert fald spændende ud det program.
Avatar billede Spotgun Seniormester
27. januar 2005 - 19:59 #12
Der er i hvert fald masser af muligheder i det, og er ret nemt at scripte til. Alle kommandoerne står desuden i hjælpefilen - og du kan evt. kombinere det med kørsel af eksterne programmer.

Men leg lidt med det, og se om det er noget for dig...
Avatar billede bertelbrander Praktikant
27. januar 2005 - 23:55 #13
Man kan godt gøre det med en .bat fil:

@echo off
setlocal

set Server=whatever.dk
set UserName=me
set PassWord=mypassword
set SourcePath=d:\temp\upl
set DestPath=xml

echo open %Server%>%temp%\upl.txt
echo %UserName%>>%temp%\upl.txt
echo %PassWord%>>%temp%\upl.txt
echo mkdir %DestPath%>>%temp%\upl.txt
echo cd %DestPath%>>%temp%\upl.txt

for /F "tokens=*" %%I in ('dir /B %SourcePath%\*.xml') do call :Process "%%I"

echo quit>>%temp%\upl.txt
ftp -s:%temp%\upl.txt
rem Optionally remove source
rem del %SourcePath%\*.tmp
rem del %SourcePath%\*.xml

goto :eof

:Process
copy "%SourcePath%\%~1" "%SourcePath%\%~n1.tmp"
echo put "%SourcePath%\%~n1.tmp">>%temp%\upl.txt
echo rename "%~n1.tmp" %1>>%temp%\upl.txt

Du skal selv udfylde rækken med set i starten.
Den opretter mappen hver gang, du kan evt slette linien:
echo mkdir %DestPath%>>%temp%\upl.txt
Hvis du vil have den til at slette .tmp filerne og .xml filerne sletter du ordet rem foran linierne med del.
Avatar billede djondjoe Nybegynder
28. januar 2005 - 12:58 #14
bertelbrander:
Det jeg får ud af den .bat fil er:

Filen blev ikke fundet.
Filen blev ikke fundet.
Det maksimale rekursionsniveau for SETLOCAL er nået.
Filen blev ikke fundet.
Det maksimale rekursionsniveau for SETLOCAL er nået.

...

Hvad kan der være galt?
Hvad betyder upl.txt helt præcist?
Avatar billede bertelbrander Praktikant
28. januar 2005 - 20:34 #15
"Filen blev ikke fundet" tyder på at der ikke er nogen xml-filer i mappen, har du rettet SourcePath?

"Det maksimale rekursionsniveau for SETLOCAL er nået." tyder på at du har kaldt batfilen for ftp.bat, det er ikke så smart, for så vil det kalde sig selv igen og igen og ikke ftp.exe. Du kan løse dette problem ved at kalde bat filen noget andet eller ændre linien "ftp -s:%temp%\upl.txt" til "ftp.exe -s:%temp%\upl.txt".

Batfilen virker ved at lave en fil med kommandoer til ftp.exe, denne fil er upl.txt, når den har lave filen med kommandoerne får den ftp.exe til at udføre kommandoerne (ftp -s:%temp%\upl.txt).
Avatar billede djondjoe Nybegynder
29. januar 2005 - 14:55 #16
Ja nu virker den .bat fil! Det kan godt passe, at der lige manglede at blive sat et Temp dir ikke? Mange tak til begge to! Vil egentlig gerne give begge point, hvordan gør man det?
Avatar billede djondjoe Nybegynder
29. januar 2005 - 14:59 #17
Hvilket "programmeringssprog" benytter den .bat fil egentlig?
Avatar billede bertelbrander Praktikant
29. januar 2005 - 17:07 #18
På XP bør temp være standard, så vidt jeg ved bør den også på andre, men den kan naturligvis mangle. Prøv at åbne en dos-prompt og kør kommandoen set, så kan du se alle variablerne. Hvilken Windows bruger du ?

Jeg tror at sproget for bat filer kaldes batch-script.

Jeg samler ikke på point.
Avatar billede djondjoe Nybegynder
29. januar 2005 - 17:22 #19
Jo, du har ret. Ved ikke hvad jeg lavede før, men det virker fint uden at sætte %temp% til noget. Bruger XP.
Tak for hjælpen endnu en gang.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester