Цикл с условием продолжения в пакете

Для разработки портативных сетевых программ любого вида в Python, Скрученный довольно полезно. Одно из его преимуществ обеспечивает удобный слой выше API сокета низкого уровня.

46
задан Lukasz Re 13 January 2017 в 09:00
поделиться

2 ответа

set /a countfiles-=%countfiles%

Это установит countfiles в 0. Я думаю, вы хотите уменьшить его на 1, поэтому используйте вместо этого:

set /a countfiles-=1

Я не уверен, что цикл for будет работать, лучше попробуйте что-нибудь вроде этого:

:loop
cscript /nologo c:\deletefile.vbs %BACKUPDIR%
set /a countfiles-=1
if %countfiles% GTR 21 goto loop
54
ответ дан 26 November 2019 в 20:13
поделиться

Цикл while можно смоделировать в cmd.exe с помощью:

:still_more_files
    if %countfiles% leq 21 (
        rem change countfile here
        goto :still_more_files
    )

Например, следующий сценарий:

    @echo off
    setlocal enableextensions enabledelayedexpansion
    set /a "x = 0"

:more_to_process
    if %x% leq 5 (
        echo %x%
        set /a "x = x + 1"
        goto :more_to_process
    )

    endlocal

выводит:

0
1
2
3
4
5

В вашем конкретном случае я бы начал со следующего. Ваше первоначальное описание было немного запутанным. Я предполагаю, что вы хотите удалить файлы в этом каталоге, пока их не станет 20 или меньше:

    @echo off
    set backupdir=c:\test

:more_files_to_process
    for /f %%x in ('dir %backupdir% /b ^| find /v /c "::"') do set num=%%x
    if %num% gtr 20 (
        cscript /nologo c:\deletefile.vbs %backupdir%
        goto :more_files_to_process
    )
48
ответ дан 26 November 2019 в 20:13
поделиться