echo将数字递增到条件为

时间:2016-01-18 10:24:35

标签: windows batch-file for-loop command

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

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

例如:我输入“3”作为“起始编号”,输入“43”作为“起始编号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
...

2 个答案:

答案 0 :(得分:1)

@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的设置以适合您的具体情况。

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

答案 1 :(得分:0)

@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"
)