6

定期的に使用する一般的なドスキーコマンドをいくつか作成しています。doskeyマクロに複数の変数を入れようとしていますが、変数にスペースが含まれる場合があります。変数値を引用しようとしましたが、機能しません。動作するのは、マクロ文字列の最後に変数を追加することだけです。

私がやりたいことは次のとおりです。doskeykeycmd=plink -l user -pw password $ 1 -batch $ 2次に、次のように実行します。c:> keycmd hostname "dir / p / users"

ただし、実行時にdoskeyに表示されるのは、$ 1 = hostname、$ 2 = "dir、および" dirはコマンドではなく、/pおよび/usersは完全に削除されます。

これを機能させるには、次のように定義する必要がありました。doskey keycmd = plink -l user -pw password $ 1 -batch $ 2 $ 3 $ 4そして次のように実行します:c:> keycmd hostname dir / p / users

「dir/p / users」を単一の$2変数にグループ化する方法はありますか?ドスキー変数パラメーターの場合、9、$ 1 ..$9しか得られません。最終的には、複雑なコマンドが不足する可能性があります。一重引用符と二重引用符を試しましたが、役に立ちませんでした...しかし、一重引用符または二重引用符、あるいはその両方は、Windowsのcmdコマンドの他の場所では機能するようです。

これに対する解決策はありますか、それとも私はドスキーでやりすぎですか?

4

2 に答える 2

5

これでうまくいくはずです。最後の var に他のすべてを指定する

keycmd=echo plink -l user -pw password $1 -batch $*
于 2013-09-29T18:47:44.920 に答える
2

( wild2010answer$*のように使用して) 最後のパラメーターにスペースを含めることはできますが、通常、doskey コマンドにスペースを含むパラメーターを含めることはできません。

Doskey の使用を参照してください。

残念ながら、パラメーターは長いファイル名にすることができますが、引用符で囲まれている場合でも、スペースを含めることはできません。
ファイル名にスペースが含まれている場合は、** 8.3 バージョンの名前を使用する必要があります。これに対する回避策はありません**。

DosKey マクロは$*、「グローバル置換可能パラメータ」と呼ばれるものも使用できます。
これはマクロの最後の部分である必要があり、マクロ名または番号付きパラメーターに割り当てられていないコマンド ラインにあるものに置き換えられます。
上記の例を次のように書き直した場合:

DOSKEY D2F=DIR $1 $g $*

その後、スペースを含む長いファイル名を最後のパラメーターとして使用できますが、代わりに使用されるパス名には$1、スペースを含むディレクトリ名を含めることはできませんでした。

于 2014-10-06T07:16:18.837 に答える