Windows CLIにコマンド置換のようなものはありますか?


13

Linux(Bash)には、バックティックを使用して、コマンドを別のコマンドのパラメーターとして使用する方法があります。

> echo ===== `time` =====

これは印刷されます:

=====現在の時刻:12:22:34.68 =====

Windowsのcmd.exeでこれを行う方法はありますか?




この投稿も参照してください(cmdからのdoskeyコマンドの使用
misterjaytee

@misterjaytee:コマンド置換とエイリアスは別のものです。
user1686

@grawity-それを指摘してくれてありがとう-自己への注意:応答する前に質問を正しく読まなければならない
...-misterjaytee

回答:


9

これを試して:

echo. ===== %time% =====

コマンド置換について言及したので、これはあなたが望むものではないかもしれないことを知っています...

for /f "usebackq tokens=*" %i in (`date/t&time/t`) do echo.  ===== %i =====

使用法の詳細については、usebackq次のコマンドを試してください。

for /?

4
うん、 for /f私が探していたものです。ありがとう!サイドノートで:それはとても気味が悪く、覚えにくい(bashの方法と比較して)。「バットプログラミング」をあきらめ、生産性を高める必要があります。PowerShellでしょうか。
クリスティディアコネスク

3

Windowsでは、「()」演算子の動作はBashコマンドの置換と似ています。

このLinuxスクリプト:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

echo $my_linux_command=$(ls)
echo $my_alternate_linux_command=`ls`

Windows PowerShellと同様の結果が得られます。

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

Windows CMDとして:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%

9
Windows CMDの例は間違っています。cmdシェルの括弧は、サブシェルでコマンドを実行するだけです。env varは "(dir)"に設定され、2番目の行で実行されます(env varが%で囲まれている場合)-実際の置換ではありません。
-davidbak

1
これは、Windows cmd.exeの行動のため不正確である
JJS

質問はcmd.exeの程度であるのに対し、これは、PowerShellのです
ラウル・サリナス- Monteagudo

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.