使用Windows批处理脚本拆分文件
发布时间:2020-12-14 02:45:41 所属栏目:Windows 来源:网络整理
导读:我有一个csv文件,我需要将其拆分为n个文件,使每个拆分文件不应超过100 MB.我需要在 Windows批处理脚本中实现它.我尝试了以下方式,但由于我的未分割文件是GB,因此花费了大量时间 @echo offsetlocal enableextensions enabledelayedexpansionset count=1set ma
我有一个csv文件,我需要将其拆分为n个文件,使每个拆分文件不应超过100 MB.我需要在
Windows批处理脚本中实现它.我尝试了以下方式,但由于我的未分割文件是GB,因此花费了大量时间
@echo off setlocal enableextensions enabledelayedexpansion set count=1 set maxbytesize=100000000 set size=1 type NUL > output_1.csv FOR /F "tokens=*" %%i in (myfile.csv) do ( FOR /F "usebackq" %%A in ('!filename!_!count!.csv') do ( set size=%%~zA) if !size! LSS !maxbytesize! ( echo %%i>>!filename!_!count!.csv) else ( set /a count+=1 echo %%i>>!filename!_!count!.csv )) 请告诉我是否有更好的方法来实现这一目标.我不能去任何其他脚本语言,因为我的服务器是Windows 解决方法
假设您的线条大小大致相同,这就行了.
它的优点是它只是一个2遍解决方案,一个用于计算线条,另一个用于打印它们. @rem echo off @rem usage: batchsplit.bat <file-to-split> <size-limit> @rem it will generate files named <file-to-split>.part_NNN setlocal EnableDelayedExpansion set FILE_TO_SPLIT=%1 set SIZE_LIMIT=%2 for /f %%s in ('dir /b %FILE_TO_SPLIT%') do set SIZE=%%~Zs for /f %%c in ('type "%FILE_TO_SPLIT%"^|find "" /v /c') do set LINE_COUNT=%%c set /a AVG_LINE_SIZE=%SIZE%/%LINE_COUNT% set /a LINES_PER_PART=%SIZE_LIMIT%/%AVG_LINE_SIZE% set "cmd=findstr /R /N "^^" %FILE_TO_SPLIT%" for /f "tokens=1,2* delims=:" %%a in ('!cmd!') do @( set /a ccc = %%a / %LINES_PER_PART% echo %%b >> %FILE_TO_SPLIT%.part_!ccc! ) 将其保存为batchsplit.bat并使用以下命令运行: batchsplit.bat myfile.csv 100000000 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- wpf – Windows 10中的正版Windows 7主题?
- Qt可用于开发Windows IoT核心应用程序吗?
- windows – 以编程方式启动登录时的应用程序
- windows-7 – 为Windows下的Tcl / Tk开发创建一个全功能的环
- Windows – Powershell:单个脚本来“清理”多个文件的多个
- Windows 2012 R2 DHCP的租约时间不正确
- windows-7 – 如何获取目录连接的实际文件夹路径?
- Microsoft BizSpark是否具有完整的MSDN优势?
- 文件系统类型(ext4、ntfs)
- batch-file – .bat If Then Statement