如何使用 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 擴展為檔案名稱和副檔名

來源命令列參數(參數)


進一步閱讀

相關內容