2016-09-27 61 views
0

我對編寫批處理文件非常陌生,但我正嘗試自動完成一些數據更新操作。我在每個月都有一個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 '' 

我可以使用通配符嗎?對不起,如果這是一個基本問題,我剛開始學習寫在這個項目的批處理文件。

+0

首先刪除'set'語句中'='兩邊的空格,以便讀取'set fname =「C:\ Users \ ... \ CO * .pdf「'(當然使用文件的實際有效路徑)。這會改變什麼嗎? –

+0

至少讓它看看文件,但是說它找不到該文件,假設它不會使用通配符。 –

回答

0

通配符的處理由應用程序完成,而不是由終端完成。

我使用的方法是使用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是文件名。 〜剝去任何引號
+0

當你把dir/b * .pdf,應該是我的目錄,所以C:\ Users \ ..,文件在哪裏?因爲當我嘗試的時候出現錯誤 –

+0

不,「dir」是一個列出目錄內容的命令。在這種情況下,它參考腳本的當前工作目錄。要查找另一個目錄,請執行'dir/b c:\ users \ myuser \ hisFolder \ *。pdf' – FloatingKiwi

+0

真棒!謝謝你的解釋,並且說明每個部分的作用,這有助於我更多地理解它。 –

相關問題