batch-file
バッチファイルの演算制限をバイパスする
サーチ…
前書き
バッチファイルでは32ビットの整数計算しかできませんが、これはさまざまなアプローチでバイパスできます。
PowerShellの使用
PowerShellは、7/2008以降のすべてのWindowsシステムにデフォルトでインストールされるため、より複雑な計算に使用できます。
@echo off
set "expression=(2+3)*10/1000"
for /f %%# in ('"powershell %expression%"') do set result=%%#
echo %result%
for /f
二重引用符を追加すると、括弧がforコマンド構文と競合するのを防ぐことができます。
潜在的な問題は、powershellが.net framerworkの読み込みのためにwsh / vbscript / jscriptを使用するよりもはるかに遅いことです
jscriptの使用
WSH/JScript
はNT以来、すべてのWindowsシステムにインストールされていますので、より複雑な計算に使用するとかなりポータブルになります。 JScriptをバッチファイルと組み合わせる方が簡単です。
@if (@codesection==@batch) @then
@echo off
set "expression=2*(2+3)/1000"
for /f %%# in ('cscript //nologo //e:jscript "%~f0" "%expression%"') do set
result=%%#
echo %result%
:: more batch code
exit /b %errorlevel%
@end
WScript.Echo(eval(WScript.Arguments(0)));
この方法では、コード全体を1つのファイルにまとめることができます。これは、PowerShellを使用するよりも高速です。 ここと、ここで 、より高度なスクリプトは(外部ファイルとして使用することができる)見つけることができます。
ペンと紙の計算をエミュレートする、数学関数の実装
- ここでは、ペンとペーパーの計算をエミュレートする最も包括的な数学ライブラリを見つけることができ、大きな数字で作業することができます。
- ペンと紙のエミュレーションの別の例を次に示します: ADD 、 Comparison 、 Multiply
- いくつかの数学関数の実装をここで見つけることができます 。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow