2013-03-08 107 views
0
@echo off 
for %%j in (*.pdf) do (
    java -jar pdfbox-app-1.7.1.jar PDFToImage %%j 
) 

if exist *.jpg (
    for %%i in (*.jpg) do (
     mkdir %%~ni 
     tesseract %%i %%~ni.txt 
     move %%i %%~ni 
     move %%~ni.txt %%~ni 
    ) 
) 

移動文件到相應的文件夾所以我有這個命令基本上轉換:如何使用批處理文件

  1. PDF文件轉換成JPG文件。
  2. 對於所有的JPG文件,它會製作相應的文件夾。
  3. 它使用tesseract軟件將圖像文件轉換爲文本文件。
  4. 將JPG文件移動到我剛創建的相應文件夾中(作品)。
  5. 將文本文件移動到我剛剛創建的相應文件夾中(不起作用)。

任何人都可以告訴我如何使它可以將文本文件移動到相應的文件夾就像我對圖像文件?所以最後對於每個文件夾來說,它將包含圖像文件和文本文件。謝謝 !

+0

當你說「不工作」時,有什麼問題?用一些虛擬文件試試你的批處理文件(沒有'tesseract'步驟)適合我。 – 2013-03-08 02:59:07

+0

嗯由於某種原因,它不適合我。因此,如果你在(* .txt)中爲%% i做 ,請移動%% i %%〜ni它會將每個文本文件移動到相應的名稱文件夾中嗎? – Sardonic 2013-03-08 03:19:49

+0

哦..確定它可以單獨使用,但由於某些原因,如果我將 單獨的命令添加到原始命令中,它不會將文本文件移動到文件夾中,只是終止.... QQ我可以在技​​術上做單獨的可執行文件,但我想在一個.. – Sardonic 2013-03-08 03:26:01

回答

2

爲什麼不告訴正方體把文件在正確的位置擺在首位,所以你不再需要它移到:-)

此外,你真的應該把你的文件名稱引號,以防萬一你遇到一個名稱中有空格的文件。

@echo off 
for %%j in (*.pdf) do (
    java -jar pdfbox-app-1.7.1.jar PDFToImage "%%j" 
) 

if exist *.jpg (
    for %%i in (*.jpg) do (
     mkdir "%%~ni" 
     tesseract "%%i" "%%~ni\%%~ni.txt" 
     move "%%i" "%%~ni" 
    ) 
) 

如果出於某種奇怪的原因,tessereact堅持把文件在當前文件夾,然後更改當前文件夾。

@echo off 
for %%j in (*.pdf) do (
    java -jar pdfbox-app-1.7.1.jar PDFToImage "%%j" 
) 

if exist *.jpg (
    for %%i in (*.jpg) do (
     mkdir "%%~ni" 
     pushd "%%~ni" 
     tesseract "..\%%i" "%%~ni.txt" 
     popd 
     move "%%i" "%%~ni" 
    ) 
) 
+0

非常感謝你!!!!!!!我怎麼沒有想到這一點..你的第一個建議工作得很好! – Sardonic 2013-03-08 19:35:18

0

我強烈懷疑tesseraxt是非常聰明的,並啓動實際的轉換作爲一個單獨的過程,然後終止。結果是,當批量試圖移動它時,可能不會寫入.txt文件。

個人而言,我會嘗試(空氣代碼)

... 
    tesseract %%i %%~ni.txt 
    call :transfer %%~ni 
... 
... 
goto :eof 
:transfer 
setlocal 
set count=6 
:tloop 
if exist %1.txt move %1.jpg %1&move %1.txt %1&goto :eof 
set /a count-=1 
:: wait 1 second... 
if %count% gtr 0 ping -n 2 127.0.0.1 >nul &goto tloop 
echo could not find %1.txt after 6 seconds... 
goto :eof