Пакетный файл: извлечение подстроки из входного параметра для использования в операторе IF - PullRequest
1 голос
/ 05 апреля 2010

Это очень простой пример того, что я пытаюсь реализовать в более сложном командном файле. Я хотел бы извлечь подстроку из входного параметра (%1) и ветвь на основе, если подстрока была найдена или нет.

@echo off
SETLOCAL enableextensions enabledelayedexpansion

SET _testvariable=%1
SET _testvariable=%_testvariable:~4,3%

ECHO %_testvariable%

IF %_testvariable%=act CALL :SOME
IF NOT %_testvariable%=act CALL :ACTION

:SOME
ECHO Substring found
GOTO :END

:ACTION
ECHO Substring not found
GOTO :END
ENDLOCAL

:END

Вот как выглядит мой вывод:

C:\>test someaction

act

=act was unexpected at this time.

Если возможно, я бы хотел превратить это в оператор IF / ELSE и оценить прямо из %1. Однако я не имел успеха ни с одним.

1 Ответ

1 голос
/ 05 апреля 2010

В ваших IF заявлениях замените = на ==.

Я думаю, вы также хотите заменить свои CALL заявления на GOTO.

Вот ваш код, но с использованием IF/ELSE вместо двух IF операторов.

@echo off
SETLOCAL enableextensions enabledelayedexpansion

SET _testvariable=%1
SET _testvariable=%_testvariable:~4,3%

ECHO %_testvariable%

IF %_testvariable%==act (
  GOTO :SOME
) ELSE (
  GOTO :ACTION
)

:SOME
ECHO Substring found
GOTO :END

:ACTION
ECHO Substring not found
GOTO :END

:END

ENDLOCAL
...