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

时间:2015-09-30 08:18:56

标签: windows cmd wmic

这有效

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未在文件属性对话框中提供文件说明?如何获取文件描述。

enter image description here

1 个答案:

答案 0 :(得分:1)

使用

可以获得相同的输出和更快的速度
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查询中的两个“问题”:路径需要将反斜杠加倍并存储文件扩展名而不启动点。

已编辑由于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 );
    };

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