Windows で拡張子のないファイルを簡単に見つける方法

Windows で拡張子のないファイルを簡単に見つける方法

ハードディスク ドライブに拡張子がまったくないファイルがいくつかあります。手動で見つけるのは非常に困難です。1 つのフォルダーに数千のファイルのうち数百のファイルがあるため、頻繁にクリックしたりスクロールしたりしてファイルを見つけようとすると、ハードウェアに大きな損傷は生じませんが、非常に目立つ損傷が生じるため、マウスをすぐに交換しなければならない状況になるのは本当に嫌です。

cmdこのタスクを簡素化するのに役立つ、またはPowerShellコマンド、または Windows エクスプローラー検索の高度なクエリ構文を知っている人はいますか?

答え1

Windowsでファイル拡張子のないファイルを検索する

Windows エクスプローラー - 高度なクエリ構文

に従ってペットセアルここにいくつかありますファイルエクスプローラーの高度なクエリ構文最初にこの方法を試してください。同等の方法については、以下をお読みください。コマンドラインそしてバッチスクリプトこのタスクのための方法。

再帰検索

kind:= -folder type:= -[] extension:= []

非再帰的

現在のフォルダ「GUI経由のオプション」検索" タブ

ここに画像の説明を入力してください

または

kind:= -folder type:= -[] extension:= [] folder:"C:\folder\path"

あなたは/fの場合出力を繰り返すループディレクトリコマンドに/Bパラメータを付けて/A-D、条件文を使ってもし指定されたディレクトリ内の反復ファイルの置換を使用して、拡張子のないファイルのみを出力するロジック。

コマンドライン

注記: これは、コマンド ライン上のディレクトリが、拡張子なしでファイルを表示するために検索する必要があるディレクトリであると想定しています。

FOR /F "TOKENS=*" %A IN ('dir /B * /A-D') DO IF /I [%~nxA]==[%~nA] ECHO %~A

バッチスクリプト

注記: SET Src=これは、拡張子のないファイルを表示するために検索する必要があるディレクトリに値を設定するバッチ スクリプトです。

@ECHO ON
SET Src=C:\folder\path
FOR /F "TOKENS=*" %%A IN ('DIR /B "%Src%\*" /A-D') DO IF /I [%%~nxA]==[%%~nA] ECHO %%~A
PAUSE
EXIT

その他のリソース

  • /Fの場合
  • FOR /?

    さらに、FOR 変数参照の置換が強化されました。次のオプションの構文を使用できるようになりました。

    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    
  • ディレクター

  • もし

答え2

PowerShell ソリューションの場合:

Get-ChildItem -Path $Path -Recurse -File -Filter '*.'

または:

Get-ChildItem -Path $Path -Recurse -File | Where-Object Extension -eq ''

この-Fileパラメータには PowerShell v3 以降が必要であることに注意してください。

答え3

コマンドプロンプトでは、次のコマンドを使用します*.:

C:\ディレクトリ\名前> ディレクトリ

2018年8月24日午前3時33分。
2018/08/24 午前3:33 ..
2018年8月24日 午前3時33分 16
2018年8月24日 午前3時33分 18 bc
2018/08/24 03:33 AM 20 勝
               3 ファイル 54 バイト

C:\ディレクトリ\名前> ディレクトリ *.

2018年8月24日午前3時33分。
2018/08/24 午前3:33 ..
2018年8月24日 午前3時33分 16
               1 ファイル 16 バイト

C:\ディレクトリ\名前>

WindowsのコマンドプロンプトはUnixではないことに注意してください。Unixのファイル名では、ドット(.) は、普通の文字です(ドットで始まるファイル名は非表示になります)。Unixでは、*e*は を含むすべてのファイル名を意味しe*.*は を含むすべてのファイル名を意味します。(明示的に)含む.

コマンドプロンプトのルールはより複雑です。  *すべてのファイル名(拡張子が付いているものも含む)を意味します。また、*.*すべてのファイル名(拡張子が付いていないものも含む)を意味します。.ただし、*.拡張子を持たないすべてのファイル名を意味します。

答え4

ls | ? {$_.Extension -eq ''}

これは最大限の省略形を使用しています。しかし、実際には @BaconBits と同じコードです。私は省略形の方が好きです。初心者には読みにくいですが、より表現力があり簡潔です。

関連情報