从文件夹中的所有文件打印文件描述,wmic 命令

Print File Descriptions from all files in a folder, wmic command

这有效

for /r "D:\FOLDER\" %i in (*) do @echo %i

但这不是

for /r "D:\FOLDER\" %i in (*) do @wmic datafile where name=%i get Description

使用第一个命令的参考,我写了 wmic 命令。但它不起作用。

给出多个错误...

Node - <MACHINE NAME>
ERROR:
Description = Invalid query

这里有什么问题。如何打印文件夹中所有文件的文件描述。

更新:在%i

周围添加了''
for /r "D:\FOLDER\" %i in (*) do @wmic datafile where name='%i' get Description

现在它给我 No Instance(s) Available. 错误?

问题:为什么wmic datafile get description在文件属性对话框中没有给出文件描述?如何获取文件描述。

使用

您将获得相同的输出并且速度更快
dir /s /b "D:\FOLDER\*"

但是,问题是如何为每个文件

查询wmic
@echo off
    setlocal enableextensions disabledelayedexpansion

    for /r "d:\folder" %%a in (*) do (
        set "folder=%%~pa"
        for /f "tokens=* delims=." %%x in (".%%~xa") do (
            setlocal enabledelayedexpansion
            for %%b in ("!folder:\=\!") do (
                endlocal 
                wmic datafile where ^
                  "drive='%%~da' and path='%%~b' and fileName='%%~na' and extension='%%~x'" ^
                get description | find ":"
            )
        )
    )

此代码处理 wmic 查询中的两个 "problems":路径需要将反斜杠加倍,文件扩展名的存储没有起始点。

已编辑 因为 OP 似乎需要文件内容中的元数据,而不是 wmic

中可用的数据
@if (@this==@isBatch) @then 
@echo off
    setlocal enableextensions disabledelayedexpansion

    call :listFilesProperties "d:\folder"
    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 fullPath = folderNameSpace.GetDetailsOf(fileName, 180);
        var title  = folderNameSpace.GetDetailsOf(fileName, 21);
        WScript.Echo( fullPath + '|' + title );
    };

这是一个混合 batch/jscript 文件,它将检索指定文件夹中文件的属性,在本例中为完整路径和文件标题。