7

コマンドライン引数をコンソールアプリケーション(コンピューター言語コンパイラ)に渡そうとしています。

私の問題:渡した引数にハイフン文字が含まれていて、「-予期しないコマンド/文字でした」というエラーが発生しています。

これは私が使用しているコマンドライン引数です(12d.exeはアプリケーション/コンパイラです):

12d.exe "C:/Staff - Name/abc.4dm"

'-'をコマンドとして見ているようで、ディレクトリ/文字列の一部ではないようです。たぶん、バッチファイルを使用してこのコマンドラインを実行し、ディレクトリパスを再フォーマットできますか?HTTP POSTのように、urlencodeを使用してpostコマンドをフォーマットできます。おそらく、コマンドラインをバッチファイルにエンコードできます。

4

2 に答える 2

6

12d.exeはいくつかの有効なファイル名を理解していないようです。12d.exeは残念です。

あなたがするかもしれないいくつかの行動があります、

  1. 代わりに短いファイル名を渡してみてください。-ハイフンが文字列の右側から外れている場合に機能することがあります。ただし、あなたの場合はそうではありません。おそらく、STAFF-~1またはそれに類似したものとして翻訳されるからです。

    call :invoke12d "Staff - Name\abc.4dm"
    goto :eof
    :invoke12d
    12d %~s1
    goto :eof
    
  2. または、ジャンクション(シンボリックリンク)を作成して、ハイフンを含まない別の名前でディレクトリを呼び出します。詳細および簡単なツールのダウンロードについては、このhttp://technet.microsoft.com/en-us/sysinternals/bb896768を参照してください。

    junction staffnam "Staff - Name"
    12d.exe "staffnam/abc.4dm"
    
于 2012-05-02T08:57:51.760 に答える
3

バッチ内のハイフンを「エスケープ」するためにを追加して^、バッチがそれを無視するようにすることができます。

12d.exe "C:/Staff ^- Name/abc.4dm"
于 2012-05-02T13:47:42.097 に答える