usage: pdftotext [options] <PDF-file> [<text-file>]
我正在使用 pdftotext (xpft,用法同上) 将目录 (和子目录) 中的所有 pdf 转换为文本文件。结构是否保留并不重要,我只是想将文件写入不同的目录。
我已经将 cmd cd 指向目录(“C:\input”说)。
因此,如果给定输入文件的路径是
C:\input\filename.pdf
我想输出到
C:\output\filename.txt
我的命令:
for /r %i in (*.pdf) do pdftotext "%i" -raw "C:\output\%i"
几乎可以工作,但它尝试输出到
C:\input\C:\output\filename
这显然会导致错误。
我该如何解决这个问题?
答案1
如何使用 for 循环并输出到不同的目录
使用以下命令:
for /r %i in (*.pdf) do pdftotext -raw "%i" "C:\output\%~ni.txt"
%~ni
仅扩展%i
为文件名(即删除驱动器号、路径和.pdf
扩展名)%~ni.txt
还添加了一个新的扩展,.txt
扩展语法
当使用参数来提供文件名时,可以应用以下扩展语法:
我们正在使用变量 %1(但这适用于任何参数)
%~f1 将 %1 扩展为完全限定路径名 - C:\utils\MyFile.txt
%~d1 将 %1 仅扩展为驱动器号 - C:
%~p1 将 %1 仅扩展为一个路径,例如 \utils\,这包括一个尾随的 \,某些命令会将其解释为转义字符。
%~n1 将 %1 扩展为不带文件扩展名的文件名 C:\utils\MyFile,或者如果仅存在路径(没有尾随反斜杠)- 则为该路径中的最后一个文件夹。
%~x1 将 %1 扩展为文件扩展名 - .txt
%~s1 更改 f、n、s 和 x 的含义以引用 Short 8.3 名称(如果存在)。
%~1 展开 %1 并删除所有引号 (")
%~a1 显示 %1 的文件属性
%~t1 显示 %1 的日期/时间
%~z1 显示 %1 的文件大小
%~$PATH:1 搜索 PATH 环境变量并将 %1 扩展为找到的第一个匹配项的完全限定名称。
上面的修饰符可以组合使用:
%~dp1 将 %1 仅扩展为驱动器号和路径
%~sp1 将 %1 扩展为缩短为 8.3 个字符的路径
%~nx2 将 %2 仅扩展为文件名和扩展名
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。