回答ありがとうございます。
状況がわかりました。やはりいつものよくある勘違いをされているようです。
文字列「\」を「\\」と書かなければいけないのは、HSPスクリプトの中で記述するときだけです。
実行中は文字列「\」を文字列「\\」に変換する必要はありません。
HSPスクリプトエディタ上では、「\」を特別な記号として利用しているため単に「\」と書くだけだと特別な記号としての機能が働いてしまい「\」が表せなくなってしまいます。
そこでHSPスクリプトエディタ上で「\\」と書かれたら、実行中は「\」として全て読み替えてから実行するように作られています。
あくまでエディタ上だけの話です。dialog命令などで実行中に取得された「\」を含む文字列はそのまま使うことができます。
dialog命令で取得したパス付きのファイル名をmes命令で表示してどのような動きをするか確認してみてください。
なお、「\」記号の特別な機能としては、次のようなものが有名所です。(エスケープシーケンスと言います。)
・「\n」=改行
・「\t」=タブ
・「\"」=「"」
> えっと、dialogで取得した"C:\Windows\Media\town.mid"みたいなのを
> "C:\\Windows\\Media\\town.mid"に置き換えたいです>_<
上記の回答で解決すると思いますが、一応これについても回答してみます。
Cheesehamburg7273さんのスクリプトそのままで、しかも意味のない変換ですが…。
a="c:\\windows\\system32\\"
mes a
strrep a,"\\","\\\\"
mes a