找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22238|回复: 11

[文件操作] 如何批量获取文件属性

[复制链接]
发表于 2021-11-10 15:50:33 | 显示全部楼层 |阅读模式
本帖最后由 chnwdz 于 2021-11-18 12:00 编辑

如何实现获取指定文件夹及其下属所有文件夹文件的属性
发表于 2021-11-10 16:07:34 | 显示全部楼层
可以调用shell.application来获取
 楼主| 发表于 2021-11-10 17:59:23 | 显示全部楼层
回复 2# idwma


    小白一个,麻烦给个详细代码
发表于 2021-11-10 20:26:05 | 显示全部楼层
回复 3# chnwdz
  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $a=New-Object -ComObject Shell.Application
  3. dir -r|?{$_.attributes -notlike "*directory*"}|%{
  4. $b=$a.namespace($_.directoryname)
  5. foreach($i in 0..300){$c+=$b.getdetailsof($b.parsename($_.name),$i)+" "}
  6. $c;$c=$null
  7. }
复制代码
发表于 2021-11-10 21:36:39 | 显示全部楼层
本帖最后由 went 于 2021-11-10 21:38 编辑

test.bat ANSI编码
  1. #&@cls&cd /d "%~dp0"&powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
  2. cls
  3. #指定文件夹
  4. $dir = 'F:\Desktop\新建文件夹'

  5. $shell = New-Object -ComObject 'Shell.Application'
  6. $folder = $shell.NameSpace($dir)
  7. $info = ''
  8. $folder.Items() | foreach {
  9.     Write-Host $_.Path
  10.     $info += &{
  11.         $_.Path + "`r`n"
  12.         $i = 30    #最大属性索引
  13.         &{
  14.             while($i -gt 0){
  15.                 $folder.GetDetailsOf(0,$i) + ': ' + $folder.GetDetailsOf($_,$i) + "`r`n"
  16.                 --$i
  17.             }
  18.         } | Where-Object { $_ -match '^.*?\S+.*?:.*?\S+.*?$'}
  19.         "----------------------`r`n"
  20.     }
  21. }
  22. $info | Out-File 'info.txt'
复制代码
 楼主| 发表于 2021-11-11 14:22:52 | 显示全部楼层
本帖最后由 chnwdz 于 2021-11-18 11:59 编辑

回复 4# idwma
发表于 2021-11-11 16:55:45 | 显示全部楼层
回复 6# chnwdz


    什么是字数和字符数?是一样的吗?
 楼主| 发表于 2021-11-11 17:03:52 | 显示全部楼层
本帖最后由 chnwdz 于 2021-11-16 10:09 编辑

回复 7# idwma


那就只要字符数,就行
感谢!
发表于 2021-11-11 19:00:00 | 显示全部楼层
  1. #@&cls&powershell "type '%~0'|out-string|iex">aaa.csv&pause&exit
  2. $a=New-Object -ComObject Shell.Application
  3. $p="177","0","1","2","3","4","5","27","20","13","281","194","198","195"
  4. dir -r|?{$_.attributes -notlike "*directory*"}|%{
  5. $b=$a.namespace($_.directoryname)
  6. foreach($i in $p){$c+=$b.getdetailsof($b.parsename($_.name),$i)+","}
  7. $c;$c=$null
  8. }
复制代码
 楼主| 发表于 2021-11-13 07:50:11 | 显示全部楼层
回复 5# went


    你好,这个只能做出来一级文件夹,子文件夹以下的文件夹及文件均不能出来。
 楼主| 发表于 2021-11-13 07:59:29 | 显示全部楼层
本帖最后由 chnwdz 于 2021-11-13 08:39 编辑

回复 9# idwma
效果棒极了。美中不足的可能是我处理出来的数据量太大(有十多万行),出来的表格部分有串列情况(不串行);个别文件夹或可能名称格式比较特殊(带字符,如:,),导致文件路径或文件名被强制分开占用两个单元格,且字符丢失,不能完全显示。可能数据量大,存在部分音视频无法获取时长,部分文件无法获取大小,个别文件未获取路径。
 楼主| 发表于 2021-11-13 08:02:01 | 显示全部楼层
本帖最后由 chnwdz 于 2021-11-13 08:04 编辑

非常感谢各位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:16 , Processed in 0.031619 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表