Пакетное преобразование файлов с помощью pandoc в windows
Я оглянулся вокруг, и единственный ответ, который я нашел, был pandoc (если кто-нибудь знает какие-либо программы с пользовательским интерфейсом, которые могут делать это партиями, что было бы здорово).
Если не то, что я хотел бы сделать, так это иметь два bat-файла в каталоге, один для того, чтобы иметь возможность преобразовывать все файлы в каталоге и любые подкаталоги из уценки в HTML, а другой - для обратного преобразования.
Я просто не понимаю, как заставить рекурсивную вещь "for in" работать в командной строке (noob здесь). Я получил, как конвертировать отдельные файлы в и из примеров Pandoc:
pandoc test.md -f markdown -t html -o test.html
или назад:
pandoc test.html -f html -t markdown -o test.md
но я еще не смог сделать пакеты ни в командной строке, ни с файлом bat. Погуглил, получил несколько похожих вопросов отсюда, и я попытался изменить несколько ответов для себя и все еще не смог справиться.
Если бы кто-то мог дать мне базовый формат, в котором он должен быть, я был бы очень признателен.
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
в соответствии с вашими обстоятельствами.
Что эта процедура будет делать, это просто echo
pandoc
Команда на экран. Это позволит вам увидеть, что будет выполнено перед тем, как его выполнить. Чтобы действительно выполнить команды после того, как вы уверены, что они верны, просто измените echo pandoc
в pandoc
Я предположил, что pandoc
будет иметь дело с "quoted filenames"
- который позволяет именам файлов содержать пробелы.
В нынешнем виде код выполнит преобразование только в том случае, если не существует "преобразованного" файла с такой же частью имени. Если вы хотите конвертировать независимо, удалите if not exist...
перед echo
, Недостатком было бы то, что Pandoc будет конвертировать x.html
в x.md
затем преобразовать полученный результат x.md
в x.html
,
Если вы хотите иметь две партии, просто скопируйте файл и удалите *.md
или же *.html
от dir...
линия в зависимости от обстоятельств.