prom1se
19-09-2013, 15:24
Возникла потребность написать скрипт для синхронизации файлов в указанной папке с файлами на фтп сервере.
После изучения данного форума (спасибо ребятам за классные посты) получилось следующее
@Echo off
SetLocal EnableDelayedExpansion
Set lst1=1.txt
Set lst2=2.txt
Set dl=3.txt
Set cp=4.txt
set ed=FOLDERtoSynh
echo Start work %date% %time% > SyncLog.txt
dir /b /o-d %ed% > %lst1%
(echo user USERNAME PASSWORD
echo cd SOMEFOLDER
echo ls -d
echo quit)|ftp -n FTPNAME > %lst2%
findstr /v /g:%lst2% %lst1%>%cp%
findstr /v /g:%lst1% %lst2%>%dl%
del %lst2%
echo open FTPNAME>>%lst2%
echo USERNAME>>%lst2%
echo PASSWORD>>%lst2%
echo cd SOMEFOLDER>>%lst2%
echo bin>>%lst2%
for /F "usebackq tokens=* delims=" %%i in (%cp%) do (set a=%%i%
echo put %ed%\!a! >> %lst2%
echo file !a! copy to FTPdir %date% %time% >> SyncLog.txt)
for /F "usebackq tokens=* delims=" %%i in (%dl%) do (set a=%%i%
echo del !a! >> %lst2%
echo file !a! delete from FTPdir %date% %time% >> SyncLog.txt)
echo quit>>%lst2%
ftp -s:%lst2% >> SyncLog.txt
del %lst1% %lst2% %cp% %dl%
И данный скрипт не корректно работает в Windows 7. После пары битв, была найдена причина, после помещения результата findstr в файл, в последней строке отсутствует перевод строки. Или причина в другом, но факт не корректно формируется список на удаление.
Проверив эту теорию оказалось, что в операционке Windows server 2008 R2 та же проблема.
Зато в Windows Server 2012 и Windows 8 скрипт отрабатывается безупречно.
Уважаемые знатоки, подскажите сталкивался ли кто то с подобной проблемой и есть ли возможность ее устранить для Win7 (2008 R2)!?
После изучения данного форума (спасибо ребятам за классные посты) получилось следующее
@Echo off
SetLocal EnableDelayedExpansion
Set lst1=1.txt
Set lst2=2.txt
Set dl=3.txt
Set cp=4.txt
set ed=FOLDERtoSynh
echo Start work %date% %time% > SyncLog.txt
dir /b /o-d %ed% > %lst1%
(echo user USERNAME PASSWORD
echo cd SOMEFOLDER
echo ls -d
echo quit)|ftp -n FTPNAME > %lst2%
findstr /v /g:%lst2% %lst1%>%cp%
findstr /v /g:%lst1% %lst2%>%dl%
del %lst2%
echo open FTPNAME>>%lst2%
echo USERNAME>>%lst2%
echo PASSWORD>>%lst2%
echo cd SOMEFOLDER>>%lst2%
echo bin>>%lst2%
for /F "usebackq tokens=* delims=" %%i in (%cp%) do (set a=%%i%
echo put %ed%\!a! >> %lst2%
echo file !a! copy to FTPdir %date% %time% >> SyncLog.txt)
for /F "usebackq tokens=* delims=" %%i in (%dl%) do (set a=%%i%
echo del !a! >> %lst2%
echo file !a! delete from FTPdir %date% %time% >> SyncLog.txt)
echo quit>>%lst2%
ftp -s:%lst2% >> SyncLog.txt
del %lst1% %lst2% %cp% %dl%
И данный скрипт не корректно работает в Windows 7. После пары битв, была найдена причина, после помещения результата findstr в файл, в последней строке отсутствует перевод строки. Или причина в другом, но факт не корректно формируется список на удаление.
Проверив эту теорию оказалось, что в операционке Windows server 2008 R2 та же проблема.
Зато в Windows Server 2012 и Windows 8 скрипт отрабатывается безупречно.
Уважаемые знатоки, подскажите сталкивался ли кто то с подобной проблемой и есть ли возможность ее устранить для Win7 (2008 R2)!?