在DOS批处理中使用Space和()解析文件名

时间:2012-05-07 19:37:22

标签: batch-file dos

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

: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="

2 个答案:

答案 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="

现在,我的回答可能不起作用,但我认为它可能会给你足够的提示来解决它。