我有一个变量列表,它是100(记事本文件,MediaList.txt),但是我想在25的范围内执行,所以最简单的方法是用下面的方法做同样的事情提到的循环。基本上我想用计数器执行下面提到的循环。
for /f %%I in (E:\MediaList.txt) do nsrjb -w -N %%I
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /a blocksize=23
FOR /f "tokens=1*delims=:" %%a IN ('findstr /n /r ".*" 100lines.txt') DO (
SET /a progress=%%a %% %blocksize%
IF !progress!==1 IF %%a neq 1 (
REM pause here
timeout /t 10
)
ECHO(nsrjb -w -N %%b
)
GOTO :EOF
出于测试目的,我将块大小设置为23,并使用我的标准100行文本文件100lines.txt
您希望如何暂停此过程是您自己关注的问题。我只是使用timeout
更改使用10秒延迟来适合自己。
为了测试目的,所需的nsrjb命令仅为ECHO
。 在您确认命令正确之后,将ECHO(nsrjb
更改为nsrjb
以实际执行nsrjb。
只需使用findstr
对每一行进行编号,然后在每行前加number:
,然后在第一个令牌上标记=数字(%%a
)和第二个令牌(%%b
)= line-tail,使用冒号作为分隔符。
从那里,需要进行delyed-expansion(计算行数mod块大小)。如果结果为1
,那么我们已经处理了一个行块,所以请等待,除非行号是1
,这意味着我们关于处理第一行。
所以 - 处理一个块(你选择大小),等待(你选择时间)超时或按键;重复直到完成。
findstr
命令可以转换文件中的行
u:\dir\file.txt
例如到
4:u:\dir\file.txt
for
命令使用tokens = 1*
和delims = :
首先取delims
,这意味着"将行划分为令牌,使用:
作为分隔符"
因此,4:u:\dir\file.txt
会被分为3个令牌,4
u
和\dir\file.txt
。
如果令牌子句选择了1,2和3(tokens=1,2,3
),那么令牌4
u
和\dir\file.txt
将分别分配给%%a
( 元变量分别在for
指令,%%b
和%%c
中提名(按字母顺序递增)。
特殊令牌"号码" *
表示“最高指定的标记号"
对于"tokens=1*"
,然后提名两个令牌(1
和*
),因此第一个令牌值4
被分配给%%a
,剩下的在指定的最高标记号(1
)之后经过标记分隔符的行将按字母顺序(%%b
)分配给下一个元变量,因此u:\dir\file.txt
被分配给%%b