2012-05-01 22 views
4

コマンドライン引数をコンソールアプリケーション(Computer Language Compiler)に渡そうとしています。ハイフンを含むコマンドライン引数を渡す

私の問題:私は渡してい引数がハイフン文字が含まれており、それがエラーの原因となっているが、「 - 予期しないコマンド/キャラクターでした」。

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

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

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

+1

1.オフトピック。 2.これは12d.exeの内部に完全に依存しています。外部からは何もできません。 – bmargulies

+0

@bmaruliesあなたは12d.exeに依存しています。あなたは正しいものではありません。いつも外からやることがあるからです。 –

+0

argv変数に文字列を表示しようとしましたか?実際にコマンドラインをどのように解析するのですか? – SirDarius

答えて

3

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" 
    
3

あなたはバッチがそれを無視することバッチでハイフンを「エスケープ」する^を追加してみてください。

12d.exe "C:/Staff ^- Name/abc.4dm" 
関連する問題