在批处理文件中使用变量作为文件路径
我对编写批处理文件非常陌生,但我正尝试自动完成一些数据更新操作。我在每个月都有一个pdf文件的文件夹中有pdftotext.exe。我希望在批处理文件中使用通配符,这样我就不必每个月都更改一次代码。所以现在我运行:在批处理文件中使用变量作为文件路径
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 ''
我可以使用通配符吗?对不起,如果这是一个基本问题,我刚开始学习写在这个项目的批处理文件。
通配符的处理由应用程序完成,而不是由终端完成。
我使用的方法是使用dir *.pdf
找到文件,然后为每个文件调用该命令。
for /F "tokens=*" %%f in ('dir /b *.pdf') do pdftotext -raw -nopgbrk "%%~f"
如果您在批处理文件中输入此值,请使用2个百分比符号。如果你直接写入到cmd
就用1
说明:
- FOR/F - 另一个命令输出的每一行运行命令
- 令牌= * - 把所有的线内容转换为%f
- dir/b * .pdf =我们循环的命令。查找所有pdf。只输出最小的数据。
- 您的命令 - %%〜f是文件名。 〜剥去任何引号
当你把dir/b * .pdf,应该是我的目录,所以C:\ Users \ ..,文件在哪里?因为当我尝试的时候出现错误 –
不,“dir”是一个列出目录内容的命令。在这种情况下,它参考脚本的当前工作目录。要查找另一个目录,请执行'dir/b c:\ users \ myuser \ hisFolder \ *。pdf' – FloatingKiwi
真棒!谢谢你的解释,并且说明每个部分的作用,这有助于我更多地理解它。 –
首先删除'set'语句中'='两边的空格,以便读取'set fname =“C:\ Users \ ... \ CO * .pdf“'(当然使用文件的实际有效路径)。这会改变什么吗? –
至少让它看看文件,但是说它找不到该文件,假设它不会使用通配符。 –