2013-12-11 72 views
2

我試圖讓批處理文件wkhtmltopdf.exe將HTML轉換成PDF格式,並拿出此代碼。wkhtmltopdf在批處理文件

@echo off &setlocal enabledelayedexpansion 
    for %%i in (*.html) do (
     set "line=" 
     for %%j in ("%%~ni.*") do set line=!line! "%%~j" 
     start "" wkhtmltopdf.exe !line! 
    ) 

然而,din't轉換什麼,給了2號線的結果

wkhtmltopdf.exe awb112312.html awb112312.pdf 
wkhtmltopdf.exe invoice.html invoice.pdf 
+0

有沒有錯誤?如果您將'>> 2 err.txt >> 1 out.txt'添加到命令(或者該轉發的cmd版本),您會得到什麼? – Nenotlep

+0

沒有錯誤,但它輸出這個文件。 [鏈接](http://pastebin.com/7app9D5a) – Lam

+0

當然看起來你正在輸出你想要的命令,而不是運行它。 –

回答

2

我想,有錯誤消息

wkhtmltopdf.exe not recognized as an internal or external command, operable program or batch file. 

輸出上運行這個批處理文件。

原因是wkhtmltopdf.exe在批處理文件中使用不完整路徑。因此,Windows首先在批處理文件的當前工作目錄中搜索,然後在環境變量PATH中包含的所有目錄中搜索,文件wkhtmltopdf.exe以分號分隔,並且因爲應用程序很可能安裝到%ProgramFiles%的子目錄中而找不到它, %ProgramFiles(x86)%

wkhtmltopdf是根據wkhtmltopdf網頁,因此該命令START不應該真正需要的所有控制檯應用程序。

另外內部對於循環對我來說沒有多大意義,如果簡單地將當前工作目錄中的每個* .html文件轉換爲PDF文件。爲什麼要在當前工作目錄中搜索與已找到的* .html文件同名的其他文件,並將所有找到的文件名連接到一個字符串?

我認爲,所有真正需要的是:

@echo off 
for %%i in (*.html) do "Complete path to wkhtmltopdf\wkhtmltopdf.exe" "%%i" "%%~ni.pdf" 
0

這種試圖通過運行它在一個PHP應用系統調用時,發生在我身上的窗戶。快速而骯髒的解決方案是將bin目錄的內容複製到您的php/web應用程序的目錄中。

我試過設置的路徑,重新啓動Web服務器等從命令行調用而不是當通過在PHP應用程序的系統調用運行時它正常工作......即使如果你給它的完整路徑。

一旦端口您的應用程序正確配置了基於UNIX的Web服務器將無需做手腳複製文件。

人生苦短,要弄清楚MFST的怪癖,但如果有人搞清楚我很樂意知道!