标题: [文件操作] [已解决]批处理dir一个46w个文件的文件夹,速度慢 [打印本页]
作者: fantasy_07 时间: 2021-7-19 17:08 标题: [已解决]批处理dir一个46w个文件的文件夹,速度慢
本帖最后由 fantasy_07 于 2021-7-19 21:09 编辑
- @echo off & setlocal enabledelayedexpansion
- (for /f "delims=" %%i in ('dir F:\bapdffile /s /b /a-d') do (
- set /p =%%i,<nul %文件路径,英文逗号做分隔符,sql server可以识别%
- set /p =%%~nxi,<nul %文件名+扩展名%
- set /p =%%~zi,<nul %文件大小%
- set /p =%%~ti:00.000,<nul %文件修改日期%
- echo !date:~0,10! !time!0
- )
- )>"E:\import\拷贝病历\3.txt"
复制代码
这个文件夹下,一共有46w个文件
这个批处理执行的时候,为什么要等好久啊
比如1点钟点了执行,结果2点钟才开始输出数据,19分钟执行完,但是前面等待了1小时
把dir的目录另存到txt,然后执行for /f,快了好多。执行完只需要4-5分钟- @echo off & setlocal enabledelayedexpansion
- dir F:\bapdffile /s /b /a-d-h >E:\import\拷贝病历\dir.txt
-
- (for /f %%i in (E:\import\拷贝病历\dir.txt) do (
- echo %%i,%%~nxi,%%~zi,%%~ti:00.000,!date:~0,10! !time!0
- )
- )>"E:\import\拷贝病历\1.txt"
复制代码
作者: Batcher 时间: 2021-7-19 17:24
回复 1# fantasy_07
试试第3行到第7行合并成一个echo命令能节省多少时间呢?
作者: fantasy_07 时间: 2021-7-19 17:45
回复 fantasy_07
试试第3行到第7行合并成一个echo命令能节省多少时间呢?
Batcher 发表于 2021-7-19 17:24
测试了一个小文件夹,后面真正执行的时间会缩短,但是执行前还是要等待好久
作者: idwma 时间: 2021-7-19 18:40
手动执行一下dir F:\bapdffile /s /b /a-d看要多久时间
可以试试for /r来输出文件路径,不用像dir要等执行完成才开始循环
作者: newswan 时间: 2021-7-19 19:41
powershell 看看速度如何- $sour = "."
- $dest = "3.txt"
-
- $a = [System.Collections.ArrayList] @{}
- Get-ChildItem -path $sour | ForEach-Object {
- $a.add( $_.fullname + "," + $_.name + "," + $_.Length + "," + $_.LastWriteTime + "," + (get-date -Format "yyyy-MM-dd HH:mm:ss:fff") )
- }
- $a | out-file -encoding utf8 $dest
复制代码
作者: fantasy_07 时间: 2021-7-19 20:13
手动执行一下dir F:\bapdffile /s /b /a-d看要多久时间
可以试试for /r来输出文件路径,不用像dir要等执行完 ...
idwma 发表于 2021-7-19 18:40
执行 dir F:\bapdffile /s /b /a-d 很快的,只要1分钟左右
用for /r 无延迟,可以立即执行
我试着把dir后的目录导入txt,然后用 for /f 读取txt,整个执行就快好多
作者: fantasy_07 时间: 2021-7-19 20:42
powershell 看看速度如何
newswan 发表于 2021-7-19 19:41
powershell怎么用啊?
作者: newswan 时间: 2021-7-19 20:48
本帖最后由 newswan 于 2021-7-19 20:51 编辑
回复 7# fantasy_07
win10 自带powershell
把这一句加到第一行,保存为bat- @powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit
复制代码
http://bbs.bathome.net/thread-31071-1-1.html
作者: cmd1152 时间: 2021-7-19 21:02
- @echo off & setlocal enabledelayedexpansion
- (for /f "delims=" %%i in ('dir F:\bapdffile /s /b /a-d') do (set /p =%%i,<nul&set /p =%%~nxi,<nul&set /p =%%~zi,<nul&set /p =%%~ti:00.000,<nul &echo !date:~0,10! !time!0))>"E:\import\拷贝病历\3.txt"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |