2016-11-27 16 views
2

VBScriptを作成して書き込むバッチスクリプトを作成しています。コード自体はそれで>シンボルを持っているのでVBScriptファイルを作成して書き込むバッチファイル

echo If Len(m) > 1 then >> sys.vbs 

バッチは、:しかし、私の手を煩わせるされたコードの一部がある

echo (code for vbscript) >> [name of vbscript].vbs 

:私はこのようなファイルに書いていますファイルはVBScriptに書き込もうとしていると解釈し、コードを切り捨てますが、そうではありません。私はコードをIf Len(m) > 1 Thenと言うが、代わりにIf Len(m) thenと言う。

私はすでに言うようにコードを変更することによって、これを回避しようとした作業:

echo if NOT Len(m) < 1 then >> sys.vbs 

が、それはどちらか動作しません。私がそうするならば、それはコードの全体の行を完全に省略します。

この問題について十分に説明していないと申し訳ありませんが、説明するのは難しいです。

+2

キャレットで '> 'をエスケープします。この 'echo'文が括弧内にあるかどうかによって、括弧をエスケープする必要があるかもしれません。 'echo^Len ^(m ^)^> 1 then >> sys.vbs' – rojo

+1

VBScriptを書き込むBATスクリプトを書くことは、何かをするために非常に迂回しているように聞こえる。本当にこれが必要だと確信していますか?あなたは本当にそれを*このように*する必要があると確信していますか?私は、このアプローチを最善の選択肢にする問題を想像するのは苦労します。おそらく、あなたの時間は、これらの不器用な回避策よりも優れたアプローチを考えた方が良いでしょう。 – Tomalak

答えて

0

<,>および>>は、まとめてredirection operatorsである。エコーされた文字列を二重引用符を使用し

echo If Len(m) ^> 1 Then >> sys.vbs 

は動作しません:@rojoはすでにコメントで指摘したように、あなたはキャレット(^)出力ファイルにそれらをリテラル文字をエコーする場合に、それらをエスケープする必要がありますこの場合、echoには出力に二重引用符が含まれているためです。

しかし、私は@Tomalakに同意します。これはあなたのアプローチを再考することです。バッチファイルからVBScriptをオンザフライで生成することは、通常、あなたが手にしている問題を解決するための良い/清潔な方法ではありません。

関連する問題