我是Windows cmd和.bat以及Tesseract的新手。但是,由于这份名单,我取得了一些成功。
我的第一个成功是此cmd-window行:
tesseract.exe -l eng+lat+ita D:\TIFs\Convivio.tiff D:\TIFs\Convivio
我的下一个成功是.bat文件:
:Start
@Echo off
ECHO.
ECHO This is a batch file
ECHO.
PAUSE
BREAK=ON
Set _SourcePath=D:\temp\TIFs\*.tif
Set _OutputPath=D:\temp\TIFs\
Set _Tesseract="D:\temp\Tesseract-OCR\tesseract.exe"
:Convert
For %%A in (%_SourcePath%) Do Echo Converting "%%A"...... &"D:\temp\Tesseract-OCR\tesseract.exe" "%%A" "%_OutputPath%%%~nA"
PAUSE
:End
Set "_SourcePath="
Set "_OutputPath="
Set "_Tesseract="
现在的问题是如何在.bat文件中包含cmd-window行中的“ -l eng + lat + ita”位。
我想到an explanation of the "For" command可以做到这一点,它指出“ 执行 命令”后面可以紧跟“ CommandLineOptions ”(即“ -l eng + lat + ita”)。
任何帮助将不胜感激...因为我已经在这个头上敲了好几个小时了...
更新:找到了替代方法,但仍想回答我的问题。
我不知道可以从cmd运行“ FOR”命令。因此,我将以下行粘贴到cmd窗口中:
for %i in (*.tif) do "D:\temp\Tesseract-OCR\tesseract.exe" -l eng+lat+ita "%i" "D:\temp\%~ni"
而且有效!
但是,正如我所说,如何使用.bat文件执行此操作?
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
:Start
@Echo off
ECHO.
ECHO This is a batch file
ECHO.
PAUSE
BREAK=ON
Set "_SourcePath=D:\temp\TIFs\*.tif"
Set "_OutputPath=D:\temp\TIFs"
Set "_Tesseract=D:\temp\Tesseract-OCR\tesseract.exe"
:Convert
For %%A in ("%_SourcePath%") Do Echo Converting "%%A"...... &"%_Tesseract%" -l eng+lat+ita "%%A" "%_OutputPath%\%%~nA"
PAUSE
:End
rem Set "_SourcePath="
rem Set "_OutputPath="
rem Set "_Tesseract="
GOTO :EOF
由于我没有tesseract
实用程序,因此我使用了另一个实用程序。上面的代码对我来说与其他实用程序一样有效,因此tesseract
不能保证。
通常的做法是从setlocal
开始批处理,这使得清理工作变得不必要(因此rem
已结束),因为在批处理终止时将执行隐式endlocal
,将环境恢复到初始状态。
分配包含引号的值是有效的,但是在合并元素时比较麻烦。同上以反斜杠终止值。我已经将您的代码转换为首选语法。请注意,语法SET "var=value"
(值可能为空)用于确保分配的值中不包含任何杂散的尾随空格。
在您的情况下它将起作用吗?交给您尝试。