如何在包含空格和“(”“)”的文件名上运行此批处理脚本?
: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="
答案 0 :(得分:1)
你有两个问题:
1)您需要一些额外的报价。
2)您使用的是错误的FOR形式。您的代码使用/ F选项和不带引号的IN()cluase。这会尝试读取文件的内容,因为您的名称包含通配符,所以该文件的内容无法正常工作。我想你想要一个.TIF文件的列表,最好用简单的FOR形式(没有/ F选项)来完成。
for %%A in (%_SourcePath%) do echo Converting "%%A"...&%_Tesseract% "%%A" "%_OutputPath%%%~nA"
答案 1 :(得分: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="
现在,我的回答可能不起作用,但我认为它可能会给你足够的提示来解决它。