首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bat脚本停止工作,以防通过AutoHotkey启动

Bat脚本停止工作,以防通过AutoHotkey启动
EN

Stack Overflow用户
提问于 2017-04-19 03:14:25
回答 1查看 294关注 0票数 0

尽管这个问题涉及Windows、AutoHotkey和MultiMarkdown,我相信这个问题与CMD (我对Windows文件缺乏了解)有着密切的关系。

所以..。

我正试图为MultiMarkdown创建一个AHK脚本,它将允许将mmd文件转换为任何扩展名(而不是特殊的html)。

这是我如何使用普通bat文件来实现的:

代码语言:javascript
复制
chcp 65001
set ext=mmd2html
for %%i in (*.md) do call multimarkdown --escaped-line-breaks --process-html --nosmart "%%i" > %%~ni.%ext%

这个很管用。如果您将此bat文件与您的mmd-文件放在一起,它将正确地转换和重命名它们。

但是,当我试图将此代码放入AHK脚本时,它将失败。以下是我所拥有的:

代码语言:javascript
复制
#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

怎么才能解决?

发布更新的

实际的问题是,与其像这样重命名文件,不如:

代码语言:javascript
复制
my_test_file.md --> my_test_file.mmd2html (yes, "mmd2html" is an extension)

它重新命名为:

代码语言:javascript
复制
my_test_file.md --> my_test_file.%ext%

换句话说,脚本不理解%ext%是可变的。下面是不使用var的AHK代码:

代码语言:javascript
复制
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

但是,我想使用变量作为文件扩展名,所以这里发布的这个工作代码只是为了演示。

EN

回答 1

Stack Overflow用户

发布于 2017-04-19 08:05:38

您需要转义内部括号。

代码语言:javascript
复制
for `%i in `(*.md`) do multimarkdown --escaped-line-breaks --process-html --nosmart "`%i">"`%~ni.`%ext`%"

尽管还没有经过测试,但可能不需要转义内部开括号,但只有确保块保持为一体的结束括号。你可以试着把它作为另一种选择,然后报告给你。

代码语言:javascript
复制
for `%i in (*.md`) do multimarkdown --escaped-line-breaks --process-html --nosmart "`%~i">"`%~ni.`%ext`%"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43485676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档