CMD/BAT - [решено] вывод строки из *.xml

Ответить
 • Просмотры: 1
Аватара пользователя
Guest

Re: CMD/BAT - [решено] вывод строки из *.xml

Сообщение Guest »

Код:

Код: Выделить всё

@Echo on
SetLocal EnableDelayedExpansion
Set Path=%Path%;C:\Users\Diman\Desktop\KDL\grep+parseXML\bin
Set XMLPath=C:\Users\Diman\Desktop\KDL\XML
For /F "delims=" %%F In ('Dir "%XMLPath%\*.xml" /B 2^>nul') Do (
	Set Prefix=&Set InsuranceNumber=0
	For /F "tokens=1,2 delims=_." %%P In ("%%~F") Do (Set Prefix=%%P&Set Suffix=%%Q)
	For /F "tokens=2 delims=><" %%N In ('grep -Eo "<LastName>[^<]*</LastName>" "%XMLPath%\%%F"') Do (If Not %%N==/LastName Set LastName=%%N)
	For /F "tokens=2 delims=><" %%N In ('grep -Eo "<InsuranceNumber>[^<]*</InsuranceNumber>" "%XMLPath%\%%F"') Do (
		If Not %%N==/InsuranceNumber Set InsuranceNumber=%%N
	)
	Call :StringLen "!InsuranceNumber!"
	If !$StringLen!==5 (Echo !Prefix!_!InsuranceNumber!_!LastName!|recode utf8..cp1251/>>"C:\Users\Diman\Desktop\KDL\result5and6.txt")
	If !$StringLen!==6 (Echo !Prefix!_!InsuranceNumber!_!LastName!|recode utf8..cp1251/>>"C:\Users\Diman\Desktop\KDL\result5and6.txt")
	If Not !$StringLen!==5 (
		If Not !$StringLen!==6 (
			Echo !Prefix!_!InsuranceNumber!_!LastName!|recode utf8..cp1251/>>"C:\Users\Diman\Desktop\KDL\result_other.txt"
		)
	)
)
Pause&Exit
:StringLen
:: Автор функции - amel27, viewtopic.php?p=68849#p68849
   Set $StringLen=0&Set $StringBuf=%~1
   If ""=="%~1" GoTo :EOF
:StringLenLoop
   Set /A $StringLen+=1
   Call Set $StringChr=%%$StringBuf:~%$StringLen%%%
   If ""=="%$StringChr%" GOTO :EOF
GoTo :StringLenLoop

Запускаю с небольшой модификацией, вытаскиваю еще и Фамилию дополнительно, не более
Аватара пользователя
Guest

Re: CMD/BAT - [решено] вывод строки из *.xml

Сообщение Guest »

LAKERS824, попробуйте запустить вот этот скрипт:
http://rghost.ru/39092099


Настройки пути к xml вынесены в файл settings.ini. На вашем файле отработало успешно.
Аватара пользователя
Guest

Re: CMD/BAT - [решено] вывод строки из *.xml

Сообщение Guest »

В принципе работает, но я заметил следующее, если в строке





Код:

Код: Выделить всё

Set Path=%Path%;%CD%\bin

я пишу свой путь, т.е.



Код:

Код: Выделить всё

Set Path=%Path%;D:\KDL\grep+parseXML\bin

то файл и создается пустым. Не пойму в чем дело?



А если я оставляю

Код:

Код: Выделить всё

%CD%\bin

, то вроде все ок, я же ведь более нигде не указываю %CD%



блин, на XP работает, как описал выше, переношу те же файлы на Windows 7 64-бит, меняю только пути и опять создается пустой файл один
Аватара пользователя
Guest

Re: CMD/BAT - [решено] вывод строки из *.xml

Сообщение Guest »

Объясните смысл замены %CD%\bin на вписанный вами вручную абсолютный путь? Не меняйте пожалуйста код, если он работает и нет веской причины его переделывать.

Почему именно после вашей модификации перестает работать точно не скажу, попробуйте сравнить вывод Echo %CD% с тем, что вы вписываете как абсолютный путь.
Аватара пользователя
LAKERS824

Re: CMD/BAT - [решено] вывод строки из *.xml

Сообщение LAKERS824 »

перенес на 2003 винду, тоже создается пустой файл.





Set Path=%Path%;%CD%\bin - эта строка указывает пусть к grep+parseXML?

Ведь у меня в папке, скажем D:\papka есть папка grep+parseXML\bin, а также в корне papka\bin - которая от recode.

Так верхний путь не может находить неверный путь?
Аватара пользователя
Guest

Re: CMD/BAT - [решено] вывод строки из *.xml

Сообщение Guest »

Цитата LAKERS824:



Set Path=%Path%;%CD%\bin - эта строка указывает пусть к grep+parseXML?
CMD/BAT - [решено] вывод строки из *.xml




Эта строка разворачивается в текущую директорию и её поддиректорию bin, где находятся все необходимые бинарники (grep, recode) и библиотеки (pcre, iconv, intl)


Цитата LAKERS824:



а также в корне papka\bin - которая от recode
CMD/BAT - [решено] вывод строки из *.xml




Но зачем? Посмотрите на содержимое той директории bin, что в данном вам архиве, там уже есть recode.

Плюс к тому, преимущество записи Set Path=%Path%;%CD%\bin - в портабельности самого скрипта, в нем нету абсолютных путей, его можно переносить куда угодно, и на другом ПК он будет работать точно так же (если не забудут скопировать директорию bin вместе с ним).
Аватара пользователя
LAKERS824

Re: CMD/BAT - [решено] вывод строки из *.xml

Сообщение LAKERS824 »

спасибо, разобрался с папкой bin и все встало на свои места. СПАСИБО.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»