在批处理文件中使用变量作为文件路径

时间:2016-09-27 02:51:29

标签: windows batch-file cmd

我是编写批处理文件的新手,但我正在尝试自动执行一些数据更新。我将pdftotext.exe放在一个文件夹中,每个月都有一个pdf文件。我希望在批处理文件中使用通配符,这样我就不必每个月都更改代码。所以现在我跑:

pdftotext -raw -nopgbrk CO_Aug16.pdf

这将使用pdf和可执行文件在同一文件夹中运行转换,但如果我尝试在文件名中使用通配符:

pdftotext -raw -nopgbrk CO*.pdf

它查找以这种方式命名的文件,因此我尝试创建一个名为fname的变量并将通配符放在该名称中,但是当我运行时:

set fname = "C:\Users\...\CO*.pdf"
pdftotext -raw -nopgbrk "%fname%"

它的行为就像是试图打开一个空白文件,我得到:

I/O Error: Couldn't open file ''

我可以使用通配符吗?很抱歉,如果这是一个基本问题,我刚开始学习为该项目编写批处理文件。

1 个答案:

答案 0 :(得分:0)

通配符的处理由应用程序完成,而不是由终端完成。

我使用的方法是使用dir *.pdf查找文件,然后为每个文件调用命令。

for /F "tokens=*" %%f in ('dir /b *.pdf') do pdftotext -raw -nopgbrk "%%~f"

如果您在批处理文件中输入此内容,请使用2个百分号。如果您直接写入cmd,请使用1。

说明

  • For / F - 为另一个命令输出的每一行运行命令
  • tokens = * - 将所有内容放入%f
  • dir / b * .pdf =我们循环的命令。查找所有pdf。仅输出最少的数据。
  • 您的命令 - %% ~f是文件名。 〜剥离任何引号