2012-08-30 8 views
1

Я использую окна, и я хочу сделать петлю внутри летучей мыши и сломать ее, когда условие выполнено, и я не хочу использовать goto, может кто-нибудь дать мне общий способ сделать это? В моем случае, я хочу, чтобы цикл, пока размер файла больше 200 КБ, поэтому в моей партии я создаю файл (это становится больше со временем), тогда я хочу проверить его размер с помощью цикла , если он больше 200 KB Я хочу разорвать петлюпакетный цикл до тех пор, пока условие не будет удовлетворено

ответ

3

к сожалению, язык сценариев партии не имеет while петли, только for циклы с заданным количеством итераций, так что я боюсь, что if + goto является единственным вариантом. Почему вы решили избежать goto заявлений в пакетном режиме?

Следующий код напоминает общий do-while цикл:

:do_while_loop_start 
rem This is the body of the loop (do something here...) 

:do_while_loop_end 
for /f "usebackq" %%a in ('somefile.txt') do set filesize=%%~za 
if %filesize% leq 204800 goto do_while_loop_start 

Разве это не элегантный достаточно? Я думаю, что это.

+1

спасибо за решение, для goto, я думаю, что цикл goto медленнее, чем другие циклы, и потому, что мой профессор языка C сказал нам, что goto является злым :) по крайней мере в c. – Leo92

+1

В общем, 'goto' является злым, потому что он может нарушить поток управления (например, вы можете перейти от' if' в 'else' другого if). Однако иногда _in batch_ вы не можете обойтись без него. В этих случаях я предполагаю, что это нормально использовать. –

Смежные вопросы