web-dev-qa-db-ja.com

forループを使用して別のディレクトリに出力するにはどうすればよいですか

 usage: pdftotext [options] <PDF-file> [<text-file>]

私はpdftotext(xpft、上記の使用法)を使用して、ディレクトリ(およびサブディレクトリ)内のすべてのpdfをテキストファイルに変換しています。構造が保持されているかどうかは関係ありません。ファイルを別のディレクトリに書き込みたいだけです。

私はすでにディレクトリを指しているcmdcdを持っています( "C:\ input" say)。

したがって、特定の入力ファイルのパスが

 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
Some_Guy

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をファイル名と拡張子のみに展開します

ソース コマンドライン引数(パラメーター)


参考文献

2
DavidPostill