3

好吧,我有点卡在我的代码的以下部分。该程序将计算文件 usernames_list.txt 中的行数。在每一行都有一个我要输入的文件夹的名称。我希望该程序进入我列表中的每个文件夹,创建一个名为 test_1 的文件,然后转到它的父文件夹。这应该重复,直到它到达列表的末尾。我做对了吗?:/由于某种原因,“跳过”选项不会接受我的变量。

    for /f %%C in ('Find /V /C "" ^< usernames_list.txt') do set lines=%%C
    set times=0
    set /A skip_value=%lines%-(%lines%-%times%)
    :redo
    FOR /F "skip=%skip_value%" %%b IN (usernames_list.txt) DO (
    cd %%b
    echo > test_1
    cd ..
    set /A times=%times%+1
    if /i {%times%}=={%lines%} (goto continue)
    goto redo
    )
    :continue
    pause
4

1 回答 1

6

如目前所写,set /A skip_value=%lines%-(%lines%-%times%)将始终评估为 0,因为时间 = 0。

SKIP 值必须>= 1。设置 SKIP=0 会导致语法错误。

在我看来,您计算 skip_value 的逻辑是有缺陷的。但是,即使您修复了逻辑,您仍然需要担心 <= 0 的值。我通过仅当值 >= 1 时使用整个选项文本定义一个 SKIP 变量来处理这种情况。

set "skip="
if %skip_value% geq 1 set "skip=skip=%skip_value%"
for /f "%skip%" %%b in (usernames_list.txt) ...

您可能需要额外的 FOR /F 选项。那不是问题。例如:

for /f "%skip% delims=" ...
于 2012-12-27T20:59:57.437 回答