如何使用 for 循环并输出到不同的目录

如何使用 for 循环并输出到不同的目录
 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 仅扩展为文件名和扩展名

来源命令行参数(参数)


进一步阅读

相关内容