2015-01-09 51 views
2

我環顧四周,我發現唯一的答案是pandoc(如果有人知道任何程序與一個用戶界面,可以做到這一點,這將是偉大的)。批量轉換文件與在Windows中的pandoc

如果不是我想要做的是在一個目錄中有兩個bat文件,一個可以將目錄中的所有文件和任何子目錄從markdown轉換爲HTML,另一個轉換回來。

我只是沒有得到如何獲得在命令提示符下工作的「for in」遞歸工具(noob here)。我如何將單個文件轉換,並從與pandoc例子:

pandoc test.md -f markdown -t html -o test.html 

或向後:

pandoc test.html -f html -t markdown -o test.md 

,但我還沒有能夠做到批次無論是在命令提示符或與一個bat文件。谷歌搜索它,從這裏得到了幾個類似的問題,我試圖修改幾個答案,我仍然無法管理它。

如果有人能給我它應該在的基本格式,我真的很感激它。

+0

請注意,從HTML轉換到Markdown將無法完美工作,因爲HTML在語義上比Markdown更豐富。 – Chris

+1

嘗試向我們展示一個示例,通過將它們編輯到您的問題中,將其轉換爲html-to-markdown命令和convert-from-markdown-to-html命令。這告訴我們你已經完成了你的聲明,你已經證明了你的機器上的文件的工作方式。還請編輯你的電話以獲得其他產品推薦 - 它邀請自以爲是的「語言戰爭」 – Magoo

+0

我打算只將html轉換回md。我知道有限制,但它確實可以滿足我的需要。 – bythelake

回答

1
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
PUSHD "%sourcedir%" 
FOR /f "delims=" %%a IN (
'dir /b /s /a-d *.md *.html ' 
) DO (
IF /i "%%~xa"==".md" (
    IF NOT EXIST "%%~dpna.html" ECHO pandoc "%%a" -f markdown -t html -o "%%~dpna.html" 
) ELSE (
    IF NOT EXIST "%%~dpna.MD" ECHO pandoc "%%a" -f html -t markdown -o "%%~dpna.MD" 
) 
) 
popd 
GOTO :EOF 

您需要更改sourcedir的設置以適合您的情況。

這個程序會做什麼只是echopandoc命令到屏幕。這是爲了讓你看到在實際執行之前會執行什麼。這使得文件名包含空格 - 要你相信他們是正確的簡單地改變echo pandocpandoc

我認爲pandoc將處理"quoted filenames"後實際執行的命令

就其本身而言,只有在尚未存在具有相同名稱部分的「轉換」文件時,代碼纔會執行​​轉換。如果要不管怎樣轉換,請在echo之前刪除if not exist...。不利的一面是pandoc會將x.html轉換爲x.md,然後將結果x.md重新轉換爲x.html

如果您想要分兩批,只需複製文件並根據需要從dir...行中刪除*.md*.html

+0

工作就像一個魅力。謝謝。 – bythelake