尽管此问题涵盖Windows CMD,AutoHotkey和MultiMarkdown,我相信,这个问题与CMD(我缺乏Windows bat文件知识)密切相关。蝙蝠脚本停止工作,如果通过AutoHotkey启动
所以......
我试图创建AHK脚本的MultiMarkdown,这将使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
它是如何解决的?
更新的Post
实际的问题是,不是重命名文件是这样的:
my_test_file.md --> my_test_file.mmd2html (yes, "mmd2html" is an extension)
它重命名字面意思:
my_test_file.md --> my_test_file.%ext%
在换句话说,脚本不明白,%ext%
是可变的。下面是工作 AHK代码,而无需使用VAR:
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
不过,我想向使用的文件扩展名的变量,所以在这里贴只是为了演示该工作代码。
是AHK逃脱的反响吗?如果是这样,你的AHK与你的批处理的'%'字符的计数是不同的。 – Magoo
@Magoo是的,反引号是AHK转义字符。据我所知,如果bat-script从bat-file启动,我们应该使用'%%',如果相同的代码直接粘贴到cmd窗口中,我们应该使用'%'。这就是我减少他们的原因。然而,我也尝试过'('.md)'%'%i调用multimarkdown --escaped-line-breaks --process-html --nosmart“'%'%i”>'%'% 〜ni.'%ext'%'。它会立即关闭cmd窗口,没有任何影响。 –
“它失败”不是很具体。但是您确定,您的AHK脚本知道,要处理哪个目录?在(* .md)中为%i在(“c:\ full path \ *。md”)中做%1或'cd/d“c:\ full path”& '(我会离开你的,因为我不会说AHK) – Stephan