Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Баг работы findstr в win7 ? Или нет? (http://forum.oszone.net/showthread.php?t=268403)

prom1se 19-09-2013 15:24 2220441

Баг работы findstr в win7 ? Или нет?
 
Возникла потребность написать скрипт для синхронизации файлов в указанной папке с файлами на фтп сервере.
После изучения данного форума (спасибо ребятам за классные посты) получилось следующее
читать дальше »
@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 2222827

Цитата:

Цитата prom1se
после помещения результата findstr в файл »

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


Время: 18:59.

Время: 18:59.
© OSzone.net 2001-