2015-03-27 2 views
0

Может кто-нибудь объяснить мне, почему этот код не так:пакетный файл, для и Findstr ошибки

set VERSION_FILE_NAME=build_version.h 
FOR /F %i in ('findstr /rc:"^\#define _VER_[ABCD] [0-9]" %VERSION_FILE_NAME%') do @echo %%i %%j %%k 

В консоли я вижу «неожиданное появление: build_version.h ').»

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

+0

Возможно, вы ищете '/ rc:"^\ # define _VER_ [ABCD] [0-9] "' регулярное выражение. –

+0

это правда, но проблема в другой части кода ... (около% VERSION_FILE_NAME%) –

+0

Если вы используете 'echo %% i %% j %% k', вам также нужны« for/f »tokens = 1-3"% % i in ... ' – rojo

ответ

1

Вы не сказать точно, что строка, которую вы ищете с findstr, но

FOR /F %i in... 

должны быть

FOR /F %%i in... 

и команда echo должна быть на одной и той же физической линии, как doили должны быть построены как

.....do (
echo.... 
) 

, где открытая скобка находится на одной и той же физической линии, что и do.

@ не требуется нормально. поскольку стандартная практика запускает командный файл с @echo off, который отбрасывает команду.

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

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