尽管这个问题涉及Windows、AutoHotkey和MultiMarkdown,我相信这个问题与CMD (我对Windows文件缺乏了解)有着密切的关系。
所以..。
我正试图为MultiMarkdown创建一个AHK脚本,它将允许将mmd文件转换为任何扩展名(而不是特殊的html)。
这是我如何使用普通bat文件来实现的:
chcp 65001
set ext=mmd2html
for %%i in (*.md) do call multimarkdown --escaped-line-breaks --process-html --nosmart "%%i" > %%~ni.%ext%这个很管用。如果您将此bat文件与您的mmd-文件放在一起,它将正确地转换和重命名它们。
但是,当我试图将此代码放入AHK脚本时,它将失败。以下是我所拥有的:
#SingleInstance, Force
f1::
bat_script =
(join&
chcp 65001
set ext=mmd2html
for `%i in (*.md) do call multimarkdown --escaped-line-breaks --process-html --nosmart "`%i" > `%~ni.`%ext`%
)
Run, %ComSpec% /c %bat_script%, %A_ScriptDir%
return怎么才能解决?
发布更新的
实际的问题是,与其像这样重命名文件,不如:
my_test_file.md --> my_test_file.mmd2html (yes, "mmd2html" is an extension)它重新命名为:
my_test_file.md --> my_test_file.%ext%换句话说,脚本不理解%ext%是可变的。下面是不使用var的AHK代码:
f1::
bat_script =
(join&
chcp 65001
for `%i in (*.md) do call multimarkdown --escaped-line-breaks --process-html --nosmart "`%i" > `%~ni.aaaaaaaa
)
Run, %ComSpec% /c %bat_script%, %A_ScriptDir%
return但是,我想使用变量作为文件扩展名,所以这里发布的这个工作代码只是为了演示。
发布于 2017-04-19 08:05:38
您需要转义内部括号。
for `%i in `(*.md`) do multimarkdown --escaped-line-breaks --process-html --nosmart "`%i">"`%~ni.`%ext`%"尽管还没有经过测试,但可能不需要转义内部开括号,但只有确保块保持为一体的结束括号。你可以试着把它作为另一种选择,然后报告给你。
for `%i in (*.md`) do multimarkdown --escaped-line-breaks --process-html --nosmart "`%~i">"`%~ni.`%ext`%"https://stackoverflow.com/questions/43485676
复制相似问题