2017-07-20 24 views
1

私は500 で電圧を減少するために、バッチファイルを実行しているいくつかの問題を抱えている。このラインは、私にいくつかの問題を与える:デクリメント電圧各反復

@ECHO OFF 
cls 
set COM_PORT=com5 

set Voltage=3000 

:start 
echo "setting voltage to %Voltage%" 
set Voltage=%Voltage%-500 
echo "setting next voltage to %Voltage%" 
pause 
goto start 

問題は、電圧が「doesnのことです各反復ごとに減分する。

+0

「Voltage1」をどこかに定義しましたか? – Carcigenicate

+0

ループ内の 'set'を取り除くとどうなりますか? – Carcigenicate

+0

'%電圧%=%電圧% - 500'? – Carcigenicate

答えて

1

これは絶対に動作します!

@ECHO OFF 
    cls 
    set COM_PORT=com5 

    set Voltage=3000 

    :start 
    echo "setting voltage to %Voltage%" 
    set /A Voltage = %Voltage% - 500 
    echo "setting next voltage to %Voltage%" 
    pause 
    goto start 
3

あなたset /a Voltage = %Voltage% - 500/aスイッチを逃しています。 set /a Voltage = Voltage - 500のように、set /aコマンドのパーセント記号を取り除くこともできます。代入演算子も同様に機能します。 set /a Voltage -= 500。しかし、最も効率的なソリューションは、ループfor /Lです。

@echo off & setlocal 
set "COM_PORT=com5" 

for /L %%I in (3000, -500, 0) do (
    set /a "Voltage=%%I" 
    echo Setting next voltage to %%I 
    pause 
) 

完全な詳細については、CMDコンソールでset /?for /?を行います。

+0

ifステートメントを使用して終了条件を作成するにはどうすればよいですか?例えば、電圧が1500ボルトに達したときにループを終了したいと思った場合などです。 – newb7777

+2

'goto'を使って、' for'ループの終わりの後にラベルを追加することができます。/for Lの構文は 'for/L %% in in(start、step、end)doです。これは、'/L %% I for(3000、-500、1500)コマンド。 – rojo