2013-03-02 3 views
1

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

Так что, если я ставлю эту команду:

for %i in (*.jpg) do tesseract %i %i.txt 

где тессеракт это программа, которая преобразует JPG файлы в текстовые файлы, он отлично работает. (tesseract input.jpg output.txt)

Но если я напишу ту же самую строку в пакетном файле, это не сработает, сказав: «На этот раз я был неожиданным».

@echo off 
for %i in (*.jpg) do tesseract %i %i.txt 

Кто-нибудь знает, что происходит не так?

ответ

5

В пакетном файле, вы должны удвоить % знак:

@echo off 
for %%i in (*.jpg) do tesseract %%i %%i.txt 
+1

Для тех, кто интересно, это делает это потому, что один знак процента читается как ничего, так что «% я» будет гласить "я". Это приведет к тому, что «я не ожидал в это время». сообщение об ошибке. Однако знак двойного процента интерпретируется как единый. Чтобы доказать это, вы можете поместить 'echo% %%' в пакетный файл и посмотреть результаты. –

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