Windowsの世界にいる、長年のUnix/Linuxユーザーからの別の質問。まず、私が何をしようとしているのかを正確に説明しましょう。私はWindows cmd.exeシェルを使用しています。現在のディレクトリの下にあるbin\Debug階層を含むすべてのディレクトリを一覧表示し、それらにファイルが含まれているかどうかを確認します(例:NAntクリーンターゲットが正常に動作しています)。私の階層は次のようになります。
\Current
\DirA
\bin
\Debug
(some files under debug)
\Release
\DirB
\bin
\Debug
\DirC
\bin
\Release
Unixでは、ls */bin/Debug
はDirA/bin/Debug
、そしてDirB/bin/Debug
は空です。私はcmd Shellでさまざまなゆがみを試しましたが、次のようなことを続けてください:
> dir *\bin\Debug ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。 > dir *\*\* ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。
Dirコマンドについて理解できない微妙なことはありますか、それともそのように制限されているだけですか?
はい、エクスプローラーに切り替えて、ナビゲートし、右クリックして、最終的には自分がやりたいことを行う検索を作成できることに気づきましたが、quick-n-dirtyコマンドラインソリューションの方が興味があります。
このような何かはあなたが望むことをするはずです。プロジェクトタイプのルートディレクトリ:
c:\path\to\slndir>dir *.dll *.exe /s /b | findstr /i "bin\debug"
Dir引数:/ s-再帰的、/ b-「ベア」、追加情報なし
findstr引数:/ i-大文字と小文字を区別しない
一般に、「help command」はシェルコマンドのヘルプを表示します。それがうまくいかない場合は、
'コマンド /?'通常はヘルプが表示されます。
Windowsは、Linuxのようにワイルドカードを実行しません。ワイルドカードを含めることができるのはファイル名部分のみです。
Windowsで動作するlsのバージョンをダウンロードして使用できます。私は Cygwin を使用しましたが、他にもあるはずです。
@for /D /r %P in (.) do @for %Q in ("%~fP\bin\Debug\*") do @echo %~ftzaQ
ナイスではありませんが、動作するはずです。 .cmdファイルに入力することもできます(その後、すべての%を2つの%%に置き換えます)。または、doskeyを使用してマクロを定義します(はい、まだ存在します)。
Cmd拡張が有効になっていることを確認します。
EDIT:仕組み:
最初のforループは、すべてのサブディレクトリ(/ Dおよび/ rスイッチ)を繰り返し処理します。 %〜fPは、そのディレクトリの完全パスに展開されます。次に、そのパスに\ bin\Debug *を追加します。 2番目のforループは、一致するすべてのファイルを列挙します。 %〜ftzaQは、一致するすべてのファイルに展開され、エコーによって画面に出力されます。奇妙な%〜ftzaQは、dir出力のようにフォーマットします。 @文字は、コマンド自体が画面に出力されるのを防ぎます。
詳細については、
nxutils にはlsコマンドがあります。ただし、問題は実際にはWindowsシェルにあります。 UNIXでは、シェルは*/bin/Debug
を関連するパス名に入力し、個別のコマンドライン引数としてlsコマンドにフィードします。
Cygwinは確かにあなたのためにトリックを行います、または bash のようなUNIXシェルのWindowsポートを試すことができます。スクリプトを使用したい場合は、pythonで glob module を使用してかなり簡単にコードを作成できます。他のほとんどのスクリプト言語でも同等のコードを使用できます。
「dir/s * .obj * lib」のようなことができます。一致したファイル数の最後に要約が表示されます。
Windowsの世界では、cmd.exeはワイルドカードを展開しません-それらはそのままコマンドラインまたはargv配列でプログラムに渡されます。したがって、各プログラムはそれらを異なる方法で解析および展開し、一部の高度な使用法(あなたが探しているような)は一般的にサポートされていません。
timgilbertの提案 Cygwinを使用するのは良いことです。また、 GNUWin32パッケージ が役立つかもしれません。