0

如何在带有空格和“(”“)”的文件名上运行此批处理脚本?

:Start
@Echo off
Set _SourcePath=C:\tifs\*.tif
Set _OutputPath=C:\txts\
Set _Tesseract="C:\Program Files\Tesseract-OCR\tesseract.exe"
:Convert
For /F "usebackq delims=" %%A in (%_SourcePath%) Do Echo Converting %%A...&%_Tesseract% %%A %_OutputPath%%%~nA
:End   
Set "_SourcePath="
Set "_OutputPath="
Set "_Tesseract="
4

2 回答 2

1

你有2个问题:

1)您需要一些额外的报价。

2) 你使用了错误的 FOR 形式。您的代码使用带有未引用的 IN() 子句的 /F 选项。这会尝试读取文件的内容,但由于您的名称包含通配符,这可能无法正常工作。我认为您想要一个 .TIF 文件列表,最好使用 FOR 的简单形式(无 /F 选项)来完成。

for %%A in (%_SourcePath%) do echo Converting "%%A"...&%_Tesseract% "%%A" "%_OutputPath%%%~nA"
于 2012-05-07T20:29:35.407 回答
0

我会把它改成这样:

:Start
@Echo off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
Set _SourcePath=C:\tifs\*.tif
Set _OutputPath=C:\txts\
Set "_Tesseract=C:\Program Files\Tesseract-OCR\tesseract.exe"
:Convert
For /F "usebackq delims=" %%A in (%_SourcePath%) Do Echo Converting %%A...&%_Tesseract% "%%A" "%_OutputPath%%%~nA"
:End   
Set "_SourcePath="
Set "_OutputPath="
Set "_Tesseract="

现在,我的回答可能行不通,但我认为它可能会给你足够的提示来弄清楚。

于 2012-05-07T20:41:00.083 回答