.bat - проверить строку в файле - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть филе XML-файлов с табуляцией и пробелами. Я пытаюсь найти строку в этом файле. Файл что-то вроде ниже. Я пытаюсь найти </ViewSettings>, и это окружено символами табуляции и пробелами.

<ViewSettings>
  <Location>
  <X>0</X>
  <Y>0</Y>
  </Location>
</ViewSettings>
<WorkspaceName="FREE_UST_BETA_UA" PAth="\\mktxindfs\data_configuration\FREE_BETA"      IsAdmin="false" />
</Workspaces>

У меня есть код ниже

echo off
setlocal enabledelayedexpansion

for %%X in (C:\add\WorkspaceXML\Workspaces.xml) do (
set "reference=</ViewSettings>"
for /f "delims=" %%T IN (%%X) do (  
        set output=%%T
        echo output:!output!
        if !output!==!reference! echo found reference.....
    )
)

Не печатается «найденная ссылка»

Спасибо

1 Ответ

2 голосов
/ 23 февраля 2012

Рассматривали ли вы создание своего пакетного файла из findstr вместо этого? Эта команда сообщит вам, была ли строка в файле, сообщив имя файла.

findstr /M /c:"</ViewSettings>" C:\add\WorkspaceXML\Workspaces.xml

EDIT

Если вместо этого вы используете findstr /N /O ..., вы можете получить номер строки и смещение совпадений, возможно, это будет более полезным для вас. Вывод в вашем случае выше будет

6:69:</ViewSettings>

РЕДАКТИРОВАТЬ 2

Правильное смещение добавлено выше благодаря dbenham. Не уверен, что смещение все еще используется для вас, но чтобы получить оба значения в vars, попробуйте это:

FOR /F "tokens=1,2 delims=:" %%a in ('findstr /N /O /c:"</ViewSettings>" C:\add\WorkspaceXML\Workspaces.xml') do echo %%a %%b 

Это, конечно, показывает вам переменные, но вы можете установить их по мере необходимости.

...