
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 行相關的所有內容的絕佳參考。