web-dev-qa-db-ja.com

Windows上のxargs:そのようなファイルやディレクトリはありません

StackOverflowで提供されるこの回答 を使用して、ローカルgitリポジトリのタグをリモートサーバーのタグと再同期したかったのです。

git tag -l | xargs git tag -d
git fetch --tags

xargs from FindUtils for Windows (私が知る限り)を含むWindowsポータブル用のgitをインストールしました。

コマンドの最初の部分を実行すると、次のようになります。

xargs:git:そのようなファイルやディレクトリはありません

コマンドを変更して実行すると、次のようになります。

git tag -l | xargs echo

それは私のためにタグを正しく「エコー」します。したがって、私の唯一の結論は、xargsは何らかの理由でパスから実行可能ファイルを解決できないということです。

Xargsに渡されたものを適切に実行させるにはどうすればよいですか(フルパスをgit.exeに渡すことなく)

4
gerrod

Unixツールの Gnu on Windows ポートを使用すると、これと同様の問題が発生しますが、エラーメッセージは常にInvalid argumentです。

> printf "Hello World!" | xargs printf "%s %s"
xargs: printf: Invalid argument

1つの解決策は、「ことわざ」の追加レベルの間接参照、たとえばcmd.exeなどのシェルを使用して、実際にコマンドを呼び出すことであるように思われます。

> printf "Hello World!" | xargs cmd /c printf "%s %s"
Hello World!
1
Chris Oldwood