从文件夹中的所有文件打印文件描述,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 文件,它将检索指定文件夹中文件的属性,在本例中为完整路径和文件标题。
这有效
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 文件,它将检索指定文件夹中文件的属性,在本例中为完整路径和文件标题。