Batch file 在DOS批处理中用空格和()解析文件名
如何在带有空格和“(“”)”的文件名上运行此批处理脚本 您有两个问题: 1) 你需要一些额外的报价 2) 您使用了错误的FOR格式。您的代码将/F选项与一个不带引号的IN()cluase一起使用。这将尝试读取文件的内容,但由于您的名称包含通配符,因此可能无法读取。我认为您需要一个.TIF文件列表,最好使用FOR(no/F选项)的简单形式Batch file 在DOS批处理中用空格和()解析文件名,batch-file,dos,Batch File,Dos,如何在带有空格和“(“”)”的文件名上运行此批处理脚本 您有两个问题: 1) 你需要一些额外的报价 2) 您使用了错误的FOR格式。您的代码将/F选项与一个不带引号的IN()cluase一起使用。这将尝试读取文件的内容,但由于您的名称包含通配符,因此可能无法读取。我认为您需要一个.TIF文件列表,最好使用FOR(no/F选项)的简单形式 我会把它改成这样: :Start @Echo off SETLOCAL ENABLEEXTENSIONS SETLOCAL ENABLEDELAYEDEXPAN
我会把它改成这样:
: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="
现在,我的答案可能不起作用,但我想它可能会给你足够的提示来解决这个问题。FOR/F在DOS中不受支持,我想你的意思是Windows NT批处理文件,但使用DOS标记并不能真正帮助你解决这个问题。。。
for %%A in (%_SourcePath%) do echo Converting "%%A"...&%_Tesseract% "%%A" "%_OutputPath%%%~nA"
: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="