将递增数字回显到具有条件的目录中的文本文件中

echo incrementing numbers into text files in a directory with conditions

我有一个包含数千个文本文件的目录。我想在前 50 个文本文件中插入 50 个数字,在接下来的 50 个文件中插入 50 个数字,依此类推直到数字 15,然后从数字 1 开始重复。

我还希望能够通过用户输入指定起始编号(在 1 到 15 之间)以及起始编号将重复的次数(仅针对起始编号,50 应该是常数随后的数字)。

例如:我输入“3”作为"starting number",“43”作为"number of repetitions for the starting number 3",这样“3”将被插入到目录中的前43个文件中,而“4” " 进入下一个 50 个文件,“5”进入下一个 50 个文件,依此类推直到 15 个,然后从 1 开始重复,直到处理完所有文本文件。

基本上,

"3" >> files 1 to 43
"4" >> files 44 to 93
"5" >> files 94 to 143
"6" >> files 144 to 193
...
"15" >> files 594 to 643
"1" >> files 644 to 693
"2" >> files 694 to 743
...
@ECHO OFF
SETLOCAL
SET "targetdir=U:\destdir"
SET "startnum=%1"
SET "repeats=%2"
IF NOT DEFINED repeats SET /a repeats=50
IF NOT DEFINED startnum SET /a startnum=1
FOR /f "delims=" %%a IN (
 'dir /b /a-d "%targetdir%\*.txt" '
 ) DO (
  CALL :appendx >>"%targetdir%\%%a"
)
GOTO :EOF

:appendx
 ECHO %startnum%
 SET /a repeats-=1
 IF %repeats%==0 SET /a repeats=50&SET /a startnum=(startnum %% 15) + 1
GOTO :eof

看起来很奇怪,但就是这样。

您需要更改 targetdir 的设置以适合您的情况。

我建议您针对虚拟测试目录对其进行测试。

@echo off
setlocal

set /A count50=50, number=1
set /P "number=Starting number [press Enter for 1]: "
set /P "count50=Number of times [press Enter for 50]: "
set /A count15=number-1, count50=50-count50

for %%a in (*.txt) do (
   >> "%%a" call echo %%number%%
   set /A "count50+=1, count15=(count15+!(count50%%50))%%15, number=count15+1"
)