Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 28
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый день! Подскажите пожалуйста, а каким образом можно данный bat-файл приспособить к следующей задаче:
Есть контрольный файл в папке C:\111 с названием: "HTIN.txt"
В нем есть контрольные строки вида:
Код: Выделить весь код
C:\222\000047675410000000011122015.XML:	
C:\222\000070380710000000011122015.XML:	
C:\222\000072491010000000011122015.XML:	
C:\222\000072515710000000011122015.XML:
Есть папка C:\111 с файлами: "R22GA.txt" его содержимое:
Код: Выделить весь код
C:\222\000047675410000000011122015.XML:	456
C:\222\000070380710000000011122015.XML:	213
C:\222\000072491010000000011122015.XML:	432
"R23GA.txt"его содержимое:
Код: Выделить весь код
C:\222\000047675410000000011122015.XML:	987
C:\222\000072491010000000011122015.XML:	456
Нужно чтобы скрипт читал из папки C:\111\*.XML файлы
И если находил в них еквивалентную контрольному файлу строчку, то записывал результат следующим образом:
Содержимое "HTIN.txt" после обработки:
Код: Выделить весь код
                                                                             R22GA   R23GA
C:\222\000047675410000000011122015.XML:	456      987
C:\222\000070380710000000011122015.XML:	213
C:\222\000072491010000000011122015.XML:	432      456
C:\222\000072515710000000011122015.XML:
Извините что морочу голову, но излазив все эти ваши интернеты так и не нашел достойного решения. И вот гляжу на этот скрипт по пингу сети и думаю "это ж мое", но как его правильно переделать под свою задачу знаний не хватает =(.

Я понимаю следующее:

Код: Выделить весь код
@Echo off
setLocal EnableExtensions
rem здесь нужно подставить вместо даты и время на название файлов из папки C:\111
set tm=%time::=%
set tm=%tm:~0,-3%
set dt=%date:~8,2%%date:~3,2%%date:~0,2%

rem 
for /f "UseBackQ tokens=1,*" %%A in ("%~n0.txt") do call :Ping %%A "%%B"
del /f "%~n0.old" >nul 2>nul
ren "%~n0.txt" *.old 2>nul
ren "%~n0.tmp" *.txt 2>nul
goto END

:Ping
set stat=Faild
if "%1"=="Date" echo Date		%dt%	%~2>>"%~n0.tmp"&exit /b
if "%1"=="Time" echo Time		%tm%	%~2>>"%~n0.tmp"&exit /b
rem а вместо команды ping нужно подставить команду которая будет проверять эквивалентность первого столбца в каждом файле со строкой в контрольном файлк и если они будут идентичными то подставлять значение из текущего по списку файла.
ping -n 1 %1 >nul 2>nul
if %ErrorLevel%==0 set stat=Ok
echo %1	%stat%	%~2>>"%~n0.tmp"
exit /b

:END

Последний раз редактировалось gremlintv2, 22-01-2016 в 17:31. Причина: ошибка


Отправлено: 17:24, 22-01-2016 | #25