[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

(完结)+20求助,批量提取文件夹中的照片名称和照片数量

本帖最后由 hxc1995 于 2024-7-24 08:43 编辑

批量提取五级目录下的文件夹中的JPG名称和统计JPG数量,提取每级目录,生成Excel

大概,想生成什么样式?

TOP

回复 2# newswan
想生成Excel中显示:1级文件夹名称,2级名称,3级名称,4级名称,5级名称,JPG数量,JPG名称

TOP

本帖最后由 newswan 于 2024-7-23 18:44 编辑

powershell
  1. $folder = "D:\share\tech"
  2. $outfile = "D:\out.csv"
  3. $folder = Get-Item -Path $folder
  4. $folderParent = $folder.Parent
  5. $n = $folder.FullName.Length + 1
  6. Push-Location $folder
  7. $List = [System.Collections.ArrayList]@()
  8. Get-ChildItem -Path "*.jpg" -Recurse -Depth 5 | Group-Object Directoryname | ForEach-Object {
  9. $arr = ( $_.Name.Substring($n) -split "\\" )
  10. $str1 = ( $arr -join "," ) + ( "," * (5 - $arr.count) )
  11. $str2 = $_.Count
  12. $str3 = $_.Group.Name -join ";"
  13. [void]$List.add( $str1 + "," + $str2 + "," + $str3 )
  14. }
  15. Pop-Location
  16. $List | Out-File -FilePath $outfile -Encoding utf8
复制代码

TOP

本帖最后由 zaqmlp 于 2024-7-23 18:14 编辑

存为ANSI/GB2312编码的bat,跟一级文件夹放一起运行
  1. <# :
  2. cls&echo off&cd /d "%~dp0"
  3. path %SYSTEMROOT%\System32\WindowsPowerShell\v1.0;%path%
  4. set "current=%cd%"
  5. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
  6. pause
  7. exit
  8. #>
  9. $current=($env:current).trimend('\');
  10. $depth=5;
  11. $ext=@('.jpg');
  12. $outfile=$current+'\结果.csv';
  13. $s=New-Object -TypeName System.Collections.ArrayList;
  14. [void]$s.add("一级`t二级`t三级`t四级`t五级`t数量`t名称");
  15. $root=New-Object IO.DirectoryInfo($current)
  16. $folders=$root.GetDirectories('*','AllDirectories');
  17. for($i=0;$i -lt $folders.length;$i++){
  18.     $arr=$folders[$i].FullName.Substring($current.length+1).split('\');
  19.     if($arr.length -eq $depth){
  20.         $files=@(dir -literal $folders[$i].FullName|?{($ext -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])})|%{$_.Name};
  21.         $line=$arr -join "`t";
  22.         if($files.length -ge 1){
  23.             $line +="`t"+$files.length+"`t"+'"'+($files -join "`n")+'"';
  24.         }
  25.         [void]$s.add($line);
  26.     }
  27. }
  28. [IO.File]::WriteAllLines($outfile, $s, [Text.Encoding]::GetEncoding('Unicode'));
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 5# zaqmlp
生成的EXCEL文件名和里面标题乱码了,文件名是数字,在表格里也是乱码的,需要表格内容是文本格式

TOP

回复 6# hxc1995

另存为ANSI/GB2312编码的bat
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 7# zaqmlp
里面的内容能不能改成打开是文本格式的,数字太长不是文本格式就乱码了

TOP

本帖最后由 zaqmlp 于 2024-7-23 18:17 编辑

回复 8# hxc1995
bat无法直接生成xls/xlsx格式表格,用microsoft office excel打开生成的csv文件,另存为xls/xlsx格式表格即可
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 9# zaqmlp
行吧,我支付

TOP

回复 5# zaqmlp
刚试了下,没用,已经有人解决了,谢谢

TOP

返回列表