Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Script Transfert automatique FTP
Auteur Message
Répondre en citant
Message Script Transfert automatique FTP 
Bonjour Mesdames , Messieurs

je cherche de l'aide pour finaliser un Batch de transfert automatique en FTP

j'en ai trouvé un sur la toile que j'ai adapté à mes besoins, il fonctionne en mono compte mais je voudrais l'automatiser pour le faire fonctionner avec environ 700 comptes

vois trouverez ci-dessous le btch en mode mono compte et ensuite l’adaptation pour le faire fonctionner avec plusieurs comptes, c'est là ou je n'arrive ou je reste coincé.

vous remerciant par avance pour toute aide que vous pourrez m'apporter

Mode Mono_user (script adapté de http://www.dostips.com/DtTipsFtpBatchScript.php)
Fonctionne parfaitement
Code:

 @Echo Off

REM -- Define File Filter
Set FindStrArgs=/E /C:".XXX"

REM -- Variable account
Set VAR1=USERNAME
Set VAR2=PASSWORD
Set FTSITE=ftp.TEST.COM
Set RMFLD=/FOLDER/YEAR

REM -- Define Destination folder
Set FLDDST=%SystemDrive%\EXPLOIT\LCFLDEST
if not exist %FLDDST%\nul md %FLDDST%
Set FLDACCNT=%FLDDST%\%VAR1%
if not exist %FLDDST%\%VAR1%\nul md %FLDDST%\%VAR1%

REM -- Ftp Script to create List of Files

Set "FtpCommand=ls"
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
REM Notepad "%temp%\%~n0.ftp"

REM -- Execute Ftp Script, collect File Names
Set "FileList="
For /F "Delims=" %%A In ('"Ftp -v -i -s:"%temp%\%~n0.ftp"|Findstr %FindStrArgs%"') Do (Call Set "FileList=%FileList% "%%A"")

REM -- Ftp Script to download files that don't exist in local folder
Set "FtpCommand=mget"
For %%A In (%FileList%) Do If Not Exist "%FLDACCNT%\%%~A" Call Set "FtpCommand=%FtpCommand% "%%~A""
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
REM Notepad "%temp%\%~n0.ftp"


For %%A In (%FtpCommand%) Do Echo.%%A

REM -- Execute Ftp Script, download files
ftp -i -s:"%temp%\%~n0.ftp"
Del "%temp%\%~n0.ftp"

)

GOTO:EOF


:extractFileSection StartMark EndMark FileName -- extract a section of file that is defined by a start and end mark
::                  -- [IN]     StartMark - start mark, use '...:S' mark to allow variable substitution
::                  -- [IN,OPT] EndMark   - optional end mark, default is first empty line
::                  -- [IN,OPT] FileName  - optional source file, default is THIS file
SETLOCAL Disabledelayedexpansion
:$created 20080219 :$changed 20100205 :$categories ReadFile
:$source [url=http://www.dostips.com]http://www.dostips.com[/url]
set "bmk=%~1"
set "emk=%~2"
set "src=%~3"
set "bExtr="
set "bSubs="
if "%src%"=="" set src=%~f0&        rem if no source file then assume THIS file
for /f "tokens=1,* delims=]" %%A in ('find /n /v "" "%src%"') do (
    if /i "%%B"=="%emk%" set "bExtr="&set "bSubs="
    if defined bExtr if defined bSubs (call echo.%%B) ELSE (echo.%%B)
    if /i "%%B"=="%bmk%"   set "bExtr=Y"
    if /i "%%B"=="%bmk%:S" set "bExtr=Y"&set "bSubs=Y"
)
EXIT /b


[Ftp Script 1]:S
!Title Connecting...
open %FTSITE%
%VAR1%
%VAR2%


!Title Preparing...
cd %RMFLD%
lcd %FLDACCNT%
ascii
hash

!Title Processing... %FtpCommand%
%FtpCommand%

!Title Disconnecting...
disconnect
bye


___

ce que je souhaite faire est à la position (ligne 23-27 et 80) , il s'agit d'une boucle qui va lire dans un fichier ligne par ligne, le nom d'utilisateur et le mot de passe pour chaque compte
il s'agit en fait d'une boucle for qui encapsule le reste du scrip)

les deux boucles fonctionnent bien je vois bien les comptes s'incrémenter. Le problème est que les paramètres VAR 1 et VAR2 ne sont pas transmis à la boucle encapsulé et donc le traitement ne s'effectue pas

j'ai essayé également de faire deux script 1 script maître avec la boucle de lecture des comptes et un call qui appellerait la routine de transfert mais encore une fois je n'arrive pas à passer les variables.

j'avais soupconné la commande SETLOCAL Disabledelayedexpansion, mais même si le le désactive cela ne fonctionne pas


Mode Multi account

Code:
@Echo Off

REM -- Define File Filter
Set FindStrArgs=/E /C:".XXX"

REM -- Define Destination folder
Set FLDDST=%SystemDrive%\EXPLOIT\LCFLDEST
@if not exist %FLDDST%\nul md %FLDDST%


REM -- Variable account
Set VAR1=USERNAME
Set VAR2=PASSWORD
Set FTSITE=ftp.TEST.COM
Set RMFLD=/FOLDER/YEAR

REM -- Define Destination home folder
Set FLDDST=%SystemDrive%\EXPLOIT\LCFLDEST
@if not exist %FLDDST%\nul md %FLDDST%



Set LSTACCT="C:\Exploit\account.txt"

FOR /F "tokens=1,2 delims= " %%i in (%LSTACCT%) Do (
   set VAR1=%%i
   set VAR2=%%j


Set FLDACCNT=%FLDDST%\%VAR1%
if not exist %FLDDST%\%VAR1%\nul md %FLDDST%\%VAR1%

REM -- Ftp Script to create List of Files

Set "FtpCommand=ls"
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
REM Notepad "%temp%\%~n0.ftp"

REM -- Execute Ftp Script, collect File Names
Set "FileList="
For /F "Delims=" %%A In ('"Ftp -v -i -s:"%temp%\%~n0.ftp"|Findstr %FindStrArgs%"') Do (Call Set "FileList=%FileList% "%%A"")

REM -- Ftp Script to download files that don't exist in local folder
Set "FtpCommand=mget"
For %%A In (%FileList%) Do If Not Exist "%FLDACCNT%\%%~A" Call Set "FtpCommand=%FtpCommand% "%%~A""
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
REM Notepad "%temp%\%~n0.ftp"


For %%A In (%FtpCommand%) Do Echo.%%A

REM -- Execute Ftp Script, download files
ftp -i -s:"%temp%\%~n0.ftp"
Del "%temp%\%~n0.ftp"

)

GOTO:EOF


:extractFileSection StartMark EndMark FileName -- extract a section of file that is defined by a start and end mark
::                  -- [IN]     StartMark - start mark, use '...:S' mark to allow variable substitution
::                  -- [IN,OPT] EndMark   - optional end mark, default is first empty line
::                  -- [IN,OPT] FileName  - optional source file, default is THIS file
SETLOCAL Disabledelayedexpansion
:$created 20080219 :$changed 20100205 :$categories ReadFile
:$source [url=http://www.dostips.com]http://www.dostips.com[/url]
set "bmk=%~1"
set "emk=%~2"
set "src=%~3"
set "bExtr="
set "bSubs="
if "%src%"=="" set src=%~f0&        rem if no source file then assume THIS file
for /f "tokens=1,* delims=]" %%A in ('find /n /v "" "%src%"') do (
    if /i "%%B"=="%emk%" set "bExtr="&set "bSubs="
    if defined bExtr if defined bSubs (call echo.%%B) ELSE (echo.%%B)
    if /i "%%B"=="%bmk%"   set "bExtr=Y"
    if /i "%%B"=="%bmk%:S" set "bExtr=Y"&set "bSubs=Y"
)
rem fin boucle lst account
[/
EXIT /b


[Ftp Script 1]:S
!Title Connecting...
open %FTSITE%
%VAR1%
%VAR2%


!Title Preparing...
cd %RMFLD%
lcd %FLDACCNT%
ascii
hash

!Title Processing... %FtpCommand%
%FtpCommand%

!Title Disconnecting...
disconnect
bye




EDIT LOGAN : Balises [CODE]




Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Script Transfert automatique FTP 
Hello,

Je pense qu'une expansion et le tour est joué.

De fait, un SetLocal EnableDelayedExpansion au début du script, et remplacer les balises des variables dézonnées (%) par !.




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message Script Transfert automatique FTP 
Merci Logan pour ta réponse je vais essayé avec ça , j'ai d'autres piste , si ca coince je le ferais sur un linux , c'est plus simple

Cdlt



Message Script Transfert automatique FTP 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch