这有效
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
未在文件属性对话框中提供文件说明?如何获取文件描述。
答案 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文件,它将检索指定文件夹中的文件属性,在本例中为完整路径和文件标题。