Как можно объединить несколько условий с помощью оператора OR в цикле FOR?

Как изменить строку в bat файле, чтобы проверить каждый из трех файлов csv, а не только первый попавший, и выполнить (GOTO :SEND_2) только в случае, если хотя бы один из них меньше 5024 байт?
  • 1 марта 2024 г. 15:40
Ответы на вопрос 2
Для объединения нескольких условий с помощью оператора OR в цикле FOR можно использовать следующий синтаксис в командной строке:

```bash
for %%i in (*.csv) do (
    if %%~zi == 0 (echo %%i is empty) else (
        if %%~zi LSS 5024 (
            echo %%i is less than 5024 bytes
            goto SEND_2
        ) else (
            echo %%i is more than or equal to 5024 bytes
        )
    )
)
```

Этот код циклически проходит по всем файлам csv в текущей директории и проверяет их размер. Если хотя бы один файл меньше 5024 байт, то выполнится команда `goto SEND_2`.

Для изменения строки в bat файле, чтобы проверить каждый из трех файлов csv, а не только первый попавший, и выполнить (GOTO :SEND_2) только в случае, если хотя бы один из них меньше 5024 байт, можно использовать пример выше и изменить его следующим образом:

```bash
set file_found=false

for %%i in (*.csv) do (
    if %%~zi LSS 5024 (
        set file_found=true
    )
)

if %file_found% == true (
    goto SEND_2
)
``` 

Этот код проверяет каждый из трех файлов csv, и если хотя бы один из них меньше 5024 байт, то устанавливает переменную `file_found` в true. После завершения цикла, если переменная `file_found` все еще равна true, то выполняется команда `goto SEND_2`.
в forе проверяйте текущий файл только на вариант SEND_2 и сразу делайте переход, если из forа выйдет без перехода - значит это COPY_2.
Похожие вопросы