2016-09-27 13 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つのパーセント記号を使用します。すべてのラインを入れて - 別のコマンド出力の各行のためのコマンドを実行します

  • トークン= * -/F用

    • :あなたはcmdに直接を書いている場合は、ちょうど1

      説明を使用%fへの内容

    • dir/b * .pdf =ループするコマンド。すべてのpdfsを検索します。最小限のデータのみを出力します。
    • あなたのコマンド - %%〜fはファイル名です。 〜は任意の引用符を取り除く
  • +0

    dir/b * .pdfを置くと、dirは私のディレクトリなので、C:\ Users \ ..ファイルはどこにありますか? –

    +0

    いいえ、 'dir'はディレクトリの内容をリストするコマンドです。この場合、スクリプトの現在の作業ディレクトリを参照します。別のディレクトリを探すには 'dir/b c:\ users \ myuser \ hisFolder \ *。pdf'を実行してください。 – FloatingKiwi

    +0

    これはうまくいきました!説明をしてくれてありがとう、そして各部品が何をしているかをレイアウトすることは、私がそれをもっと理解するのに役立ちます。 –

    関連する問題