lørdag, januar 23, 2021

commandline ftp

Daily Rush Debat Programmering commandline ftp

  • Forfatter
    Emne
  • #0

    Jingle
    Bruger
    894 indlæg
    Offline

    Hey

    hvordan laver jeg en .bat fil der logger ind på min ftp og downloader alle filer i en mappe til en forudbestemt lokal mappe og derefter flytter filerne til en undermappe på serveren??

    Hvorfor lad være ???

Viser 11 kommentarer - 1 til 11 (af 11 i alt)
  • Forfatter
    Kommentarer
  • #1

    Kolben
    Bruger
    18.939 indlæg
    Offline

    Jeg tror ikke at en bat fil er sagen, da du ikke rigtigt kan pipe’e kommandoer ind i dit FTP-program. Så skal det hele foregå på en enkelt linje, med login-procedure og overførsler osv.

    P=NP?

    #2

    roadrunnah
    Bruger
    14.414 indlæg
    Offline

    ftp open http://ftp.minefiler.dk brugernavnet:kode copy *.* C:\ftp filer

    DAMN YOU Clicker Heroes!

    #3

    Skye
    Bruger
    235 indlæg
    Offline

    #1
    Nah, du kan generere et ftp-script under eksekveringen af batch filen.

    Du kan ovenikøbet køre test på om filerne allerede eksisterer, og så kun hente dem der ikke gør.

    Førstnævnte gøres ved at pipe kommandoer til ftp-script filen.

    f.eks:

    set tempfil=ftp-script.txt

    >>%tempfil% echo username
    >>%tempfil% echo password
    >>%tempfil% echo quote pasv
    >>%tempfil% echo prompt n

    *** Kald til under’funktion’ som danner listen over filer der skal hentes og skriver en linje til ftp-scriptet med
    mput og 3 filnavn (eksempel)

    til sidst kaldes:
    ftp -s:ftp-script.txt ip port

    Ovenstående er selvfølgeligt langt fra korrekt, og er skrevet mens jeg stadigt forsøger vågne.

    Har et komplet script liggende på arbejde, som kun skal justeres lidt for at det virker, som #0 ønsker det.

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

    #4

    Jingle
    Bruger
    894 indlæg
    Offline

    #3 genialtdet er lige det jeg har brug for. Kan du poste scriptet i morgen? det skal hente alle .txt filer i en remote mappe, gemme dem lokalt og derefter flytte dem til en remote under mappe.

    Hvorfor lad være ???

    #5

    Skye
    Bruger
    235 indlæg
    Offline

    #4
    Skal se om jeg husker det. Min hukommelse er ikke hvad den har været

    Dog tror jeg ikke det er optimalt at smide ‘koden’ her, da det samlede script fylder ret meget.

    Så må finde ud af noget andet der.

    Kan ikke huske om jeg fik lavet download delen færdig (skiftede over til c#, til det formål det skulle bruges til). Men burde
    være nemt at fikse så den del også virker.

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

    #6

    Skye
    Bruger
    235 indlæg
    Offline

    #0

    Har lige fikset scriptet til dig.
    Men, som det er nu, fungerer det kun med den samme ftp server (altså ikke downloade fra en ftp server, og uploade til en anden. Kan dog fikses)

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

    #7

    Jingle
    Bruger
    894 indlæg
    Offline

    #5 takker for indsatsen men har fundet ud af det.
    Hvis der andre der har brug for noget lign. er scriptet her.

    downloader alle filer i REMOTEPATH til LOCALFILE og uploader alle file fra LOCALFILE til REMOTEPATHDONE ag sletter så alle filer i REMOTEPATH.

    @echo off

    SET SERVER=xxxx
    SET USERNAME=xxxxx
    SET PASSWORD=xxxxx
    SET LOCALFILE=C:\ship\
    SET REMOTEPATH=/shipfiles
    SET REMOTEPATHDONE=/shipfiles/done
    SET REMOTEFILE=*.txt
    SET TEMPFILE=$temp.txt

    cd %LOCALFILE%

    echo open %SERVER% >%TEMPFILE%
    echo %USERNAME%>>%TEMPFILE%
    echo %PASSWORD%>>%TEMPFILE%
    echo bin >>%TEMPFILE%
    echo cd %REMOTEPATH% >>%TEMPFILE%
    echo prompt >>%TEMPFILE%
    echo mget %REMOTEFILE% >>%TEMPFILE%
    echo cd %REMOTEPATHDONE% >>%TEMPFILE%
    echo mput %REMOTEFILE% >>%TEMPFILE%
    echo cd %REMOTEPATH% >>%TEMPFILE%
    echo mdelete %REMOTEFILE% >>%TEMPFILE%
    echo bye >>%TEMPFILE%
    ftp -s:c:\ship\$temp.txtt

    Hvorfor lad være ???

    #8

    Jingle
    Bruger
    894 indlæg
    Offline

    #6 kunne godt tænke mig at se scriptet alligevel da det jeg har fundet ud af ikke er 100% ok f.eks det er lat i mappen der bliver downloaded og ikke kun txt filerne og det samme gælder med upload til en anden mappe

    Hvorfor lad være ???

    #9

    Skye
    Bruger
    235 indlæg
    Offline

    prøver smide det her, men ved ikke hvor kønt det bliver

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

    #10

    Skye
    Bruger
    235 indlæg
    Offline

    @echo OFF

    ::******************************** Can change these
    Set RemoteFolder1=remote download folder
    Set RemoteFolder2=remote upload folder
    Set LocalFolder=local folder
    Set RemoteHost=server address
    Set User=login
    Set Pass=pass
    Set Extension=extension

    ::******************************** Dont mess with these tho
    Set FindStrArgs=/E /C:%Extension%
    Set TimeNow=%time%
    Set TimeNow=%TimeNow:,=%
    Set TimeNow=%TimeNow:.=%
    Set TimeNow=%TimeNow::=%
    Set TimeNow=%TimeNow: =%
    Set TempScript=%TimeNow%.ftp
    Set TempScript2=%TimeNow%2.ftp
    Set LogFil=ftpscriptlog.log
    Set “FileList=”
    Set “GetStr=”
    Set PrefetchFil=%TimeNow%.raw
    Set PendingFiles=0
    GOTO Start

    ::******************************** Init temp script
    :Init
    >>%TempScript% ECHO %User%
    >>%TempScript% ECHO %Pass%
    >>%TempScript% ECHO cd %RemoteFolder1%
    Exit /b

    :Init2
    >>%TempScript2% ECHO %User%
    >>%TempScript2% ECHO %Pass%
    >>%TempScript2% ECHO cd %RemoteFolder2%
    Exit /b

    :PrefetchFiles
    >>%PrefetchFil% ECHO %User%
    >>%PrefetchFil% ECHO %Pass%
    >>%PrefetchFil% ECHO cd %RemoteFolder1%
    >>%PrefetchFil% ECHO ls *.%Extension% nlist
    >>%PrefetchFil% ECHO disconnect
    >>%PrefetchFil% ECHO bye
    ftp -v -s:%PrefetchFil% %RemoteHost%
    TYPE NUL >%PrefetchFil%
    DEL %PrefetchFil%
    EXIT/b

    :PrefetchFiles2
    dir /b %LocalFolder%\*.%Extension% > ulist
    EXIT/b

    :Start
    ::******************************** Conditions

    Call :Main

    GOTO End

    ::******************************** Get files
    :Main
    rem *******************************
    rem Download files from FTP
    rem *******************************
    Call :PrefetchFiles
    Call :Init
    Set “FileList=”
    >>%LogFil% ECHO Henter filer: %time% / %date%
    >>%TempScript% ECHO lcd %LocalFolder%
    >>%TempScript% ECHO binary
    >>%TempScript% ECHO prompt n
    Set count=0
    FOR /F “eol= tokens=* delims=usebackq” %%A In (‘”type nlist”‘) Do (
    Set GetStr=%%A
    Call :CheckFil
    )

    IF %count% gtr 0 (
    Set PendingFiles=1
    >>%TempScript% ECHO mget %FileList%
    Set “FileList=”
    Set count=0
    )

    >>%TempScript% ECHO disconnect
    >>%TempScript% ECHO bye
    IF %PendingFiles%==1 (
    ftp -v -s:%TempScript% %RemoteHost%
    )

    Set “Pendingfiles=”
    Set “count=”
    Set “GetStr=”

    rem *******************************
    rem Upload files to FTP
    rem *******************************
    Call :PrefetchFiles2
    Call :Init2
    Set “FileList=”
    >>%LogFil% ECHO Uploading files: %time% / %date%
    >>%TempScript2% ECHO lcd %LocalFolder%
    >>%TempScript2% ECHO binary
    >>%TempScript2% ECHO prompt n
    Set count=0
    FOR /F “eol= tokens=* delims=usebackq” %%A In (‘”type ulist”‘) Do (
    Set GetStr=%%A
    Call :CheckFil2
    )

    IF %count% gtr 0 (
    Set PendingFiles=1
    >>%TempScript2% ECHO mput %FileList%
    Set “FileList=”
    Set count=0
    )

    >>%TempScript2% ECHO disconnect
    >>%TempScript2% ECHO bye
    IF %PendingFiles%==1 (
    ftp -v -s:%TempScript2% %RemoteHost%
    )

    GOTO FinishTransfer

    :CheckFil

    rem ********************** Block Start
    rem Leave out this block if you dont
    rem care about existing local files
    rem getting overwritten
    IF EXIST “%LocalFolder%\%GetStr%” (
    Goto CheckDone
    )
    rem ********************** Block END

    if %count%==3 (
    Set PendingFiles=1

    >>%TempScript% ECHO mget %FileList%
    Set “FileList=”
    Set count=0
    )
    Set /a count=count+1
    Set FileList=%FileList% “%GetStr%”

    :CheckDone
    EXIT /b

    :CheckFil2

    if %count%==3 (
    Set PendingFiles=1

    >>%TempScript2% ECHO mput %FileList%
    Set “FileList=”
    Set count=0
    )
    Set /a count=count+1
    Set FileList=%FileList% “%GetStr%”

    :CheckDone
    EXIT /b

    ::******************************** END
    :FinishTransfer

    >>%LogFil% ECHO Kørsel afsluttet!: %time% / %date%
    >>%LogFil% ECHO
    TYPE NUL >%TempScript%
    TYPE NUL >%TempScript2%
    DEL %TempScript%
    DEL %TempScript2%

    :End

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

    #11

    Skye
    Bruger
    235 indlæg
    Offline

    #0
    fik du det til at fungere?

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

Viser 11 kommentarer - 1 til 11 (af 11 i alt)
  • Du skal være logget ind for at kommentere på dette indlæg.