2016-10-05 8 views
0

ファイル名をパラメータとして受け入れることができるWindowsバッチファイルを作成し、PDF内のテキストを検索して名前を変更したいファイル。たとえば、123.pdfというファイルがあり、そのPDFの中に「My Name:Paul」というテキストがあります。私は123.pdfの新しいコピーを作成し、Paul.pdfと呼んでいます。私は以下のファイルを作成しましたが、残念ながらそれが機能していません、私は問題が "My Name:Paul"に名前を変更しようとしていると思います。良いニュースは、PDFファイルをtxtファイルに解凍すると、pdftotext.exeのおかげでうまく動作していることです。WindowsのコマンドラインからPDFのテキストに基づいて名前を変更

助けてください。もちろん

@ECHO OFF 
SETLOCAL 
SET "sourcedir=C:\" 
set pdffile=%1 
pdftotext.exe %pdffile%.pdf 
FOR /f "delims=" %%a IN ('findstr /B /L /c:"My Name:" "%sourcedir%\%pdffile%.txt"') DO (

echo %%a 

SET myname=%%a 

SET myname=myname: =% 
SET myname=myname::=% 
echo %myname% 

echo COPY %pdffile%.pdf %myname%.pdf 
COPY %pdffile%.pdf %myname%.pdf 
) 

答えて

1

、あなたは正しいです:それはドライブ/パス区切りだから、あなたは、Windowsのそれで:で名前を使用してファイルの名前を変更することはできません。

スクリプトのために、あなたはmynameのために遅れた拡張を有効にする必要があるが、その後、ループに代わり%!を使用します(スペース& mynameからコロンではなくプレフィックスを除去しているときにも問題を修正しました!)。

@ECHO OFF 
setlocal ENABLEDELAYEDEXPANSION 
SET "sourcedir=C:\" 
set pdffile=%1 
pdftotext.exe %pdffile%.pdf 
FOR /f "delims=" %%a IN ('findstr /B /L /c:"My Name:" "%sourcedir%\%pdffile%.txt"') DO (

echo %%a 

SET myname=%%a 

rem ok but that doesn't remove My Name prefix 
rem SET myname=!myname: =! 
rem SET myname=!myname::=! 
rem this does: 
set myname=!myname:My Name:=! 

echo COPY %pdffile%.pdf !myname!.pdf 
COPY "%pdffile%.pdf" "!myname!.pdf" 
) 
+0

ありがとうJean!文法エラーが発生しました。このテキストは正しく変換されていますか?:myname =!mynameを設定してください:My Name:=! ' – AAA

+0

Hmm ...」コマンドの構文が正しくありません。 :123.pdf " – AAA

+0

COPY 123.pdf私の名前:123.pdf – AAA

関連する問題