如何使用命令提示符中的描述查找和删除文件

如何使用命令提示符中的描述查找和删除文件

有一种病毒可以自我复制。

exe 文件的名称都是随机的,但所有应用程序都有一个共同点。应用程序的描述始终是“minecraft”(其他孩子把它放到了电脑上)。

所以我的问题是:如何找到所有带有“minecraft”描述的 exe 文件。

这是一台测试计算机,内存较低,我不想安装任何防病毒软件或扫描仪。

回答这个问题时不要考虑病毒和传播,我只需要一种方法(如果可能的话)根据文件描述来搜索文件。

答案1

您可以使用 PowerShell 实现此目的。例如,您可以使用以下命令显示所有可执行文件及其描述:

Get-ChildItem <your-path>\*.exe -Recurse | select Name, 
@{label="Description";expression={$_.VersionInfo.FileDescription}}

管道符号后面的部分会拉出名称和描述。您可以调整此部分以使用 WHERE 调节器搜索特定描述:

Get-ChildItem <your-path>\*.exe -recurse | select Name, 
@{label="Description";expression={$_.VersionInfo.FileDescription}} | where 
Description -eq 'minecraft'

如果您在使用 WHERE 子句时遇到问题,请尝试 -like 'mine*' 或类似子句。

答案2

CD \
FORFILES /S /M *minecraft* /C "cmd /c echo @path"

这将返回文件名中包含“minecraft”的所有文件名列表

更多信息档案

编辑:需要描述,有人认为在 Windows 之前不需要描述,这就是为什么它不能通过任何“标准”命令获得(也不能使用 WMIC.EXE)

参考:文件描述

@if (@this==@isBatch) @then 
@echo off
    setlocal enableextensions disabledelayedexpansion

    call :listFilesProperties "d:\temp"
    goto :eof

:listFilesProperties folder    
    cscript //nologo //E:JScript "%~f0" "%~f1"
    goto :eof

@end  
var folderNameSpace = WScript.CreateObject("Shell.Application").NameSpace(WScript.Arguments.Item(0));

    for (
        var fileEnum = new Enumerator(folderNameSpace.Items());
        !fileEnum.atEnd();
        fileEnum.moveNext()
    ){
        var fileName = fileEnum.item();
        var description = folderNameSpace.GetDetailsOf(fileName, 34);
        WScript.Echo( fileName + '|'  + description);
    };

示例输出:

sqlite-tools-win32-x86-3280000.zip|
SQLite.Interop.dll|System.Data.SQLite Interop Assembly
sqlite3.def|
sqlite3.dll|SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.
sqlite3.exe|SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.
sqlite3_analyzer.exe|

相关内容