Войти

Показать полную графическую версию : Баг работы findstr в win7 ? Или нет?


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)!?

specialist
23-09-2013, 22:41
после помещения результата findstr в файл »
возможно покажется банальным, но если дело в особенностях и различиях работы findstr в разных ОС, я бы попробовал взять данный файл (c:\Windows\System32\findstr.exe) из той ОС, где он работает "безупречно" и закинуть в папку со скриптом, чтобы скрипт брал его в первую очередь.




© OSzone.net 2001-2012