昔、私は指定されたディレクトリ内の指定された名前を持つすべてのサブディレクトリを削除する簡単なスクリプトを書きました。
Remove-Item * -Force -Recurse -Include name1,name2,name3 -ErrorAction SilentlyContinue
長い間使っていなかったのですが、必要になりました。 起動しても何も削除されません。
「何だ?」と思います。 掘り始めました。 いろいろいじって、すべてを調べ、事前にリストを作成し、名前を変更しましたが、それでも何も削除されません。 最後に、彼らの文書で私は次のように読みました。」実際、-Include は -Recurse と組み合わせて使用するとバグが多いため、松葉杖構造を使用してください。":
Remove-Item の Recurse パラメーターには既知の問題があるため、この例のコマンドでは Get-ChildItem を使用して目的のファイルを取得し、パイプライン オペレーターを使用してそれらのファイルを Remove-Item に渡します。
そうですね、この松葉杖を使って書き直しました。 素晴らしい取引です。何も削除されません。 さらに、 Get-ChildItem с -含む 空虚を返します。 繰り返しになりますが、何をしても、パラメータをどのように歪めても、機能しませんでした。 主なことは、 -除外 動作しますが、 -含む とんでもない。 私は丸一日これに費やしました。パラメーターのどこかで失敗したのではないか、難しいニュアンスを考慮に入れていなかったのではないかと考え続けました。 そして結局何が起こったのでしょうか? PS7.1にインストールして動作しました。 のみを使用する最初のクラッチレスオプションも含まれています。 アイテムの削除 稼いだ。 一般的に、それは彼らのバグであることが判明しました。
しかし、Mighty Shell に悩まされていたので、なぜ彼らのシェルがこれほど驚異的な構文を持っているのかを読むために Google に行きました。 くそー、彼らはそれをコンソール用の .NET として位置づけていますが、C# 構文の匂いさえ感じません。 彼の代わりに…
ところで、こんな記事を見つけました。」
Mighty Shell チームには Bash ファンが多いのではないかと思います。
- 最後に、複雑なスクリプトを記述できる Windows 用のコンソールを作成しましょう。 そうでなければ、私たちの cmd は時代遅れであり、すでに少し恥ずかしいことになっています。
- しましょう! 何をもとにやりますか? すでに VBScript や JScript があります。 最後に、.NET 用の言語として、C#、VB があります。 たぶんC#でできるでしょうか? つまり、コンソールのスクリプト言語として C# を使用します。 さらに、そこに .NET クラスを追加したいと考えています。
- いや、何してるの、C# って何? 本物のオタクは bash を使います! それでは、Windows 用の bash を作成しましょう。 bash の構文が 1960 年代に流行に敏感な集団によって書かれたと思われることは気にしません。 一般に、複雑であればあるほど良いのです。 直観力は弱者の為だ! 私たちの言語でスクリプトを書くとき、ユーザーは世界のあらゆるものを呪い、いくつかの新しい呪いの言葉を発明しなければなりません。 そのような言語だけが生きる権利を持っています。 ほら、Linux の人たちは一生そうやって暮らしていて、そこから説明のつかないスリルを感じているんです。 なぜ私たちはさらに悪いのでしょうか?
登録ユーザーのみがアンケートに参加できます。
PowerShell を使用していますか? PowerShell に慣れていますか?
-
視聴者の38%が使わない40
-
視聴者の38%が試してみたけど気に入らなかった39
-
視聴者の38%が私はそれを使っていますが、すべてに満足しています31
-
視聴者の38%が使っているけど満足していない17
-
視聴者の38%が万歳! ついにお気に入りの bash を Windows で使用できるようになりました!5
132 人のユーザーが投票しました。 26名のユーザーが棄権した。
出所: habr.com