永发信息网

批处理如何获取每个文件夹里第一个和最后一个文件的文件名,以及文件总数量并将统计结果按格式输出到txt

答案:3  悬赏:60  手机版
解决时间 2021-04-04 21:03
  • 提问者网友:最爱你的唇
  • 2021-04-03 22:20
100分高分悬赏!因工作的特别要求,有1000个文件夹,每个文件夹里有几十个文件且都没有子文件夹没有二级目录,跪求一个批处理程序,实现批量统计这1000个文件夹的以下信息并按以下格式列到一个txt文本里。

(文件夹名)空格(文件夹第一个文件的文件名)空格(文件夹最后一个文件的文件名)空格(这个文件夹里的文件数量)

如果太抽象的话 我举个例子,比如其中一个文件夹,文件夹名是ABC,文件夹里有文件0001.jpg 0002.txt 0003.zip …… 0041.doc共41个文件,经过批处理后,其在批处理后生成的文本文件里属于它的那一行内容为:

ABC 0001.jpg 0041.doc 41

大师们,休怪我的要求奇葩,的确是工作需要,不到万不得已我真的不想问这么无厘头的问题。
但是这种批处理程序对高手来说,是易如反掌吧?
最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-04-03 23:56
批处理文件放那1000文件夹并列位置运行,(或还可将此总文件夹拖到批处理文件图标上运行)结果在批处理文件同位置--统计.txt
@echo off
set "ds=%~dp0"
if not "%1"=="" set "ds=%~1"
cd/d "%ds%"
set n=0&set f1=-&set "fn=-"
(for /f "delims=" %%i in ('dir/b/ad')do (
  setlocal enabledelayedexpansion
  cd "%%i"
  >con echo %%i:
  for /f "delims=" %%j in ('dir/b/a-d/on')do (
     set/a n+=1
     set "fn=%%j"
     >con echo;     %%j
     if "!f1!"=="-" set f1=%%j)
     echo %%i !f1! !fn! !n!
   endlocal
))>"%~dp0统计.txt"
echo;&echo 统计完毕!
ping /n 5 127.1>nul
全部回答
  • 1楼网友:一叶十三刺
  • 2021-04-04 02:01
using System; using System.IO; using System.Runtime.InteropServices; class Expdir { [DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)] private static extern int StrCmpLogicalW(string psz1, string psz2); static void Main(string[] args) { String path = args.Length>0?args[0].ToString():Environment.CurrentDirectory; string[] files = Directory.GetFiles(path); Array.Sort(files, StrCmpLogicalW); foreach (string file in files) { Console.WriteLine(file); } } }
  • 2楼网友:长青诗
  • 2021-04-04 00:30
@echo off&setlocal enabledelayedexpansion&for /f "delims=" %%a in ('dir /s/b %1')do set/a a+=1&ren "%%a" "!a!.*" echo msgbox "已处理!a!个文件^!",vbinformation,"友情提醒">>%temp%\temp.vbs&%temp%\temp.vbs&del %temp%\temp.vbs&ex ::vbt-兜兜 ```原码 ::将文件夹拖入或放在该文件夹里运行本p 即可!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯