2015-09-22 3 views
0

Нужно немного больше помочь здесь, пожалуйста, я просто немного от завершения моего сценария, но, похоже, не могу представить этот последний фрагмент.Сравнение вывода с строкой

фона:

Мне нужно сравнить вывод команды \\%%A\%B до заданного «список исключений», чтобы сравнить ли или нет процесс уже запущен на другой сценарий. У меня есть файл, в котором хранятся журналы местоположений файлов, у которых были ошибки копирования. Этот файл журнала анализируется, и все местоположения файлов хранятся (на лету) в %%A и %%B. В списке исключений указано, какие файлы уже скопированы вручную на основе известных проблем. Этот скрипт должен пропустить эти файлы и скопировать остальные.

Требование:

Мне нужно сравнить результаты %% A \ %% B в \ Root \ путь и посмотреть, если строка соответствует (до файла). Если это произойдет, мне нужно будет это обозначить.

Код:

Это то, что я до сих пор:

cd C:\logs 
for /f "tokens=2* delims=\" %%A in (err.log) do (
    if not \\%%A\%%B==%BACKUPDIR% (
     if not \\%%A\%%B==%TEMPLATEPATH%\* (  
      for %%I in %PSTNAMES% do (
       if not "\\%%A\%%B"=="%NASDIR%\%%I PST\"* (
        echo %NASDIR%\%%I PST\* 
        @echo \\%%A\%%B 
       ) else (
        echo false 
       ) 
      ) 
     ) 
    ) 

Это должно дать вам представление о том, что должно произойти я также пытается вписаться в коде сравнения:

If NOT "%somepath%"=="%somepath:some_exclusion=%" (
    echo continue 
) else (
    echo don't continue 
) 

EXTRA:

Теперь первый набор кода будет работать, если бы у меня были только пути, но поскольку он содержит имена файлов, сравнение не совпадает. Чтобы получить эту работу, я предполагаю, что есть два пути.

  1. Попробуйте получить "%somepath%"=="%somepath:some_exclusion=%" работает
  2. Попробуйте раздеться имя файла

Вопросы, я встретив являются:

  1. %somepath% не будет работать, потому что я не могу для хранения %%A как переменная типа %var%
  2. Я не могу остановить путь перед именем файла.

Пожалуйста, помогите

+1

Вы пытаетесь использовать подстановочный знак с 'if'? – Stephan

+2

Добавить 'echo if not \\ %% A \ %% B ==% BACKUPDIR%' непосредственно перед 'if not \\ %% A \ %% B ==% BACKUPDIR%', 'echo if not \\ %% A \ %% B ==% TEMPLATEPATH% \ * 'непосредственно перед' if not \\ %% A \ %% B ==% TEMPLATEPATH% \ * 'и т. Д., Чтобы увидеть, что не так ...' == ' вызывает простой текстовый comarison, без каких-либо возможных подстановочных знаков – JosefZ

+0

Я просто приводил пример, как мне нужно найти \\ share \ path \ все, что соответствует \\ share \ path \ –

ответ

1

, если вы пытаетесь использовать групповые символы с if: это не будет работать.

но вместо

if mouse==mouse* 

вы можете использовать

echo mousetail | find "mouse" && echo yes || echo no 

(показал только основной принцип, findstr имеет некоторые полезные функции, такие как "начало строки": findstr "^mouse" - see Findstr/`для more)

Смежные вопросы