回答:
使用するには、Get-ChildItemコマンドレットとコマンドレットを-Recurseスイッチ:
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Forcecd V:\MyFolder続きls -r -inc CopyForBuild.bat
                    ls -r -ea silentlycontinue -fo -inc "filename.txt" | % { $_.fullname }
                    *ファイル名の末尾にアスタリスク記号()を追加して、部分的な文字列を実行するようにこの回答を調整しました。****** LINE1:$File = "Microsoft.OData.Core.NetFX35.V7*"LINE2:$Folder = "C:\Program Files"LINE3:Get-ChildItem -Path $Folder -Filter $File -Recurse -ErrorAction SilentlyContinue -Force
                    これを使用してファイルを検索し、PowerShellに結果のパス全体を表示させます。
dir -Path C:\FolderName -Filter FileName.fileExtension -Recurse | %{$_.FullName}あなたは、常にワイルドカードを使用することができます*でFolderName、および/またはFileName.fileExtension。例えば:
dir -Path C:\Folder* -Filter File*.file* -Recurse | %{$_.FullName}上記の例では、C:\ドライブ内の単語で始まるフォルダを検索しますFolder。という名前のフォルダーがある場合FolderFoo、FolderBarPowerShellはこれらのフォルダーの両方からの結果を表示します。
ファイル名とファイル拡張子についても同様です。特定の拡張子を持つファイルを検索したいが、ファイルの名前がわからない場合は、次を使用できます。
dir -Path C:\FolderName -Filter *.fileExtension -Recurse | %{$_.FullName}またはその逆:
dir -Path C:\FolderName -Filter FileName.* -Recurse | %{$_.FullName}Get-ChildItem V:\MyFolder -name -recurse *.CopyForbuild.batも動作します
これが私が苦労して最後に思いついた方法です:
Get-ChildItem -Recurse -Path path/with/wildc*rds/ -Include file.*出力をクリーナー(パスのみ)にするには、以下を使用します。
(Get-ChildItem -Recurse -Path path/with/wildc*rds/ -Include file.*).fullname最初の結果のみを取得するには、以下を使用します。
(Get-ChildItem -Recurse -Path path/with/wildc*rds/ -Include file.*).fullname | Select -First 1ここで重要なものについて:
ファイルまたはディレクトリのみを検索するには、orを使用しないでください(以下の理由を参照してください)。代わりにこれをファイルに使用してください:-File-Directory
Get-ChildItem -Recurse -Path ./path*/ -Include name* | where {$_.PSIsContainer -eq $false}および-eq $falseディレクトリを削除します。のような末尾のワイルドカードを残さないでくださいbin/*。
組み込みのスイッチを使用しないのはなぜですか?彼らはひどいですし、ランダムに機能を削除します。たとえば-Include、ファイルで使用するには、パスの末尾をワイルドカードにする必要があります。ただし、これは通知-Recurseせずにスイッチを無効にします。
Get-ChildItem -File -Recurse -Path ./bin/* -Include *.libあなたはそれが*.libすべてのサブディレクトリのすべてのs を与えると思うでしょうが、それはトップレベルののみを検索しますbin。
ディレクトリを検索するには、を使用できます-Directoryが、末尾のワイルドカードを削除する必要があります。何らかの理由で、これは非アクティブ化しません-Recurse。これらの理由から、組み込みフラグを使用しないことをお勧めします。
このコマンドはかなり短くできます:
Get-ChildItem -Recurse -Path ./path*/ -Include name* | where {$_.PSIsContainer -eq $false}なる
gci './path*/' -s -Include 'name*' | where {$_.PSIsContainer -eq $false}Get-ChildItem にエイリアスされています gci-Path デフォルトは位置0なので、最初の引数パスを作成できます-Recurse にエイリアスされています -s-Include 略記がないこれを試して:
Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse | Where-Object { $_.Attributes -ne "Directory"}| Where-Object { !$_PSIsContainer }してフォルダを除外することもできます
                    ワイルドカードを使用してフィルタリングする:
Get-ChildItem -Filter CopyForBuild* -Include *.bat,*.cmd -Exclude *.old.cmd,*.old.bat -Recurse正規表現を使用したフィルタリング:
Get-ChildItem -Path "V:\Myfolder" -Recurse
| Where-Object { $_.Name -match '\ACopyForBuild\.[(bat)|(cmd)]\Z' }'\ACopyForBuild\.(bat|cmd)\Z'?