以下是我试图解决的问题:每周一次将6个文本文件放在一个目录中,每个文件都有可变数量的记录。我需要将每个文件分成5个其他文件(每个工作日一个)。因此,在此过程运行后,我将有30个文件。我希望这可以作为计划任务运行,这样我就不必每周手动拆分这些文件。
实施例: File One.txt有1000条记录,因此它将分为File One A.txt(200条记录),File One B.txt(200条记录),File One C.txt(200条记录),File One C.txt( 200条记录)和File One D.txt(200条记录) 文件Two.txt可能有500条记录,因此它将被分成5个100条记录的文件。 (文件二A.txt,文件二B.txt等)
约束:我正在运行Windows Server 2008.我无法安装任何其他第三方实用程序,我也不想编译解决方案或安装任何东西。如果可能的话,我更喜欢它是一个批处理文件。
我在这里看到了其他示例,查看文件中的字符串,但这与内容无关。谢谢你的帮助!
答案 0 :(得分:0)
这是未经测试的:
@echo off
setlocal EnableDelayedExpansion
rem Create destination folder
md SplittedFiles 2>NUL
rem Process the 6 files
for %%a in (*.txt) do (
rem Count number of records in this file
for /F %%b in ('find /C /V "" ^< "%%a"') do set records=%%b
rem Get Records per file and remaining records
set /A recsPerFile=records/5, remaining=recsPerFile*5+1
rem Split this file in 5 parts
< "%%a" (
for %%b in (A B C D E) do (
(for /L %%c in (1,1,!recsPerFile!) do (
set "record="
set /P record=
echo(!record!
)) > "SplittedFiles\%%~Na %%b.txt"
)
rem Add remaining records to last part, if any
(for /L %%c in (!remaining!,1,!records!) do (
set "record="
set /P record=
echo(!record!
)) >> "SplittedFiles\%%~Na E.txt"
)
)
以前的程序会修改可能带有感叹号的记录;如果需要,这一点可以修复。