この質問にもかかわらず、Windows CMD、AutoHotkey、およびMultiMarkdownについては、CMD(Windowsのbatファイルに関する知識が不足しています)と密接に関連しています。だから、AutoHotkeyで起動した場合、バットスクリプトが動作しなくなる
...私は任意の拡張子(ないparticulary HTML)にMMDファイルを変換することができますMultiMarkdownためのAHKスクリプトを作成しようとしています
。
chcp 65001
set ext=mmd2html
for %%i in (*.md) do call multimarkdown --escaped-line-breaks --process-html --nosmart "%%i" > %%~ni.%ext%
これは動作します:
これは、私は、プレーンbatファイルでそれを行うことができる方法です。この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%
は可変です。ここで作業 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ウィンドウに直接貼り付けられたならば '%'を使うべきです。これが私を減らした理由でした。しかし、私も、マルチマークダウン - エスケープ - 改行 - プロセス - html --nosmart "'% '%i"> '%'%(* .md) 〜ni.'%ext'% '。何も影響を与えずにすぐにcmdウィンドウを閉じます。 –
"それは失敗"はあまり具体的ではありません。しかし、あなたのAHKスクリプトはどのディレクトリを処理するのか分かりますか? ''完全なパス\ *。md ")do ...'または 'cd/d" c:\フルパス "で%iを試してみてください。 – Stephan