2016-03-29 7 views
0

ran =%random%のようなコマンドをバッチファイルに使用することの欠点なしに、javacriptで乱数を生成するa nice scriptが見つかりましたほとんどの同時通話に同じ番号を与えます)。そのコードは動作しますが、画面上に乱数が表示されます。しかし、私はjavascriptの多くを知りませんし、私は2つの入力変数でJavaスクリプト関数を呼び出すことができ、別の変数にランダムな値を返す方法を理解できません。私はこのようなことをしたいと思います。2つの引数を持つJavaスクリプト関数をバッチファイルから呼び出して、結果をDOS変数に返す方法

@set @e=0 /* 
@echo off 
    set minV=0 
    set maxV=5000 
    set @e= 
    cscript //nologo //e:jscript "%~f0" minV maxV 
exit /b 
*/ 

function getRandomNumber(min, max) { 
return Math.floor(Math.random() * (max - min + 1)) + min; 
} 

しかし動作しません。また、私は元のスクリプトが

set @e= 

は「e」の呼び出しの結果を格納する変数であり、ここで「E」の前にサイン「で」使用している理由を理解いけませんか?

+2

最初 '@set E @ = 0 'のみに使用されている有効なJScriptの割り当てがありますコメントの '/ *'を挿入してください。後方の 'set @ e ='コマンドはバッチ内の '@ e'変数を削除するために使われます。この行は有用な結果ではなく、削除される可能性があります。 – Aacini

答えて

1

あなたはJavaの機能が変更されないままにしたい場合は、あなたがfor /Fループによって、その出力をキャプチャすることができます:

@set @e=0 /* 
    @echo off 
    set minV=0 
    set maxV=5000 
    set @e= 
    for /F "delims=" %%L in (' 
     cscript //nologo //e:jscript "%~f0" %minV% %maxV% 
    ') do set "ran=%%L" 
    echo(%ran% 
    pause 
    exit /b 
*/ 

function getRandomNumber(min, max) { 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
} 

WScript.Echo(getRandomNumber(parseInt(WScript.Arguments(0)), parseInt(WScript.Arguments(1)))); 
+0

ありがとうございます。 niceと思われますが、.batファイルをコピーして実行すると、実行された値が更新されないようです。 exit/bの前にecho%ran%を追加しましたが、実行は空です。どんな手掛かり? – Lupocci

+0

うーん、それは私のために働く。 '* .bat'ファイルをダブルクリックしても結果を表示するために、コードに' echo'と 'pause'を追加しました。 'echo'を同じ場所に置いたのですか? – aschipfl

+0

ああ申し訳ありませんが、コードの最後の行をコピーしていませんでした。私はWScript.EchoはJavaScriptのエコーだけだと思っていましたが、バッチファイルに値を返すのに本当に必要でした。しかし、私は5000以上の乱数を取得し、0から5000の間ではなく0から50000の間を見ます。それはあなたと同じですか? – Lupocci

0

バッチファイルの最後の2行です。このVBScriptのに

If exist "%filterpath%FilterExit.bat" call "%filterpath%FilterExit.bat" 
If exist "%filterpath%FilterExit.bat" del "%filterpath%FilterExit.bat" 

と当量のJscript

Set Fso = CreateObject("Scripting.FileSystemObject") 
Set File = Fso.CreateTextFile(FilterPath & "FilterExit.bat", True) 
If err.number <> 0 then 
    Outp.WriteLine "Error: " & err.number & " " & err.description & " from " & err.source 
    err.clear 
    wscript.exit 
End If 
File.WriteLine "set Filter_LineCount=" & Count 
File.close 

これはあなたのJScriptを作成し、既存のバッチファイルからバッチファイルを実行します。

PS整数を返す場合はwscript.quit <integer>を使用でき、整数は%errorlevel%になります。

関連する問題