Проверьте, есть ли подстрока в переменной - Команда в той же строке (cmd / c) - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь использовать этот код (работает очень хорошо):

setlocal enabledelayedexpansion & set "WP=(wordA) (wordB) (wordC)" & set "WN=wordBB"
IF NOT "!WP:(%WN%)=!"=="!WP!" (echo found) ELSE (echo Not found)

Но это не работает (для использования в VBScript):

cmd /v /c "setlocal enabledelayedexpansion & set "WP=(wordA) (wordB) (wordC)" & set "WN=wordBB" & IF NOT "!WP:(%WN%)=!"=="!WP!" (echo found) ELSE (echo Not found)"

Что я делаю не так?

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

Это лучший пример в моем случае:

cmd /v:on /c "@echo off & set "WP=(v0) (v2) (v6) (v4)" & (for %a in (v1 v2 v3 v4) do set "WN=%a" & if not \"!WP:(%WN%)=!\"==\"!WP!\" (echo Found %a) else (echo not %a) ) & pause"

Мне нужно использовать! WN!переменная для поиска строки в! WP!(Я не могу использовать% a напрямую, потому что! WN! - это фильтр для других функций ...

Что мне нужно, чтобы это исправить?

1 Ответ

0 голосов
/ 03 декабря 2018

Вы должны избегать внутренних двойных кавычек (") с обратной косой чертой (\).Пожалуйста, проверьте наличие escape-символов в командном файле здесь .

За исключением вышеприведенного синтаксиса cmd /v [...] неверно.cmd /v:on включит отложенное расширение переменной, а cmd /v:off выключит его.Пожалуйста, введите cmd /? в новом cmd для получения дополнительной информации.

Итак, после этого вам нужно изменить свою команду, чтобы она выглядела так:

cmd /v:on /c "set \"WP=(wordA) (wordB) (wordC)\" & set \"WN=wordB\" & if not \"!WP:(%WN%)=!\"==\"!WP!\" (echo found) else (echo Not found)"

КстатиКоманда setlocal enabledelayedexpansion была удалена, так как она не была необходима, потому что в cmd вы устанавливали отложенное расширение переменной с помощью cmd /v:on, как упомянуто выше.

Надеюсь, это поможет!

...