batch-file
Contourner les limitations arithmétiques dans les fichiers de commandes
Recherche…
Introduction
Les fichiers par lots ne permettent que des calculs sur des nombres entiers de 32 bits, bien que cela puisse être contourné par différentes approches.
Utiliser Powershell
Comme le PowerShell est installé par défaut sur tous les systèmes Windows à partir de 7/2008, il peut être utilisé pour des calculs plus complexes:
@echo off
set "expression=(2+3)*10/1000"
for /f %%# in ('"powershell %expression%"') do set result=%%#
echo %result%
Attention aux doubles guillemets supplémentaires dans le for /f
qui empêchent les crochets d'entrer en conflit avec la syntaxe de la commande for.
Le problème potentiel est que Powershell est beaucoup plus lent que l’utilisation de wsh / vbscript / jscript à cause du chargement du framerwork .net
Utiliser jscript
WSH/JScript
est installé sur tous les systèmes Windows depuis que l’utilisation de NT pour des calculs plus complexes la rend très portable. JScript est plus facile à combiner avec un fichier batch:
@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)));
Avec cette approche, vous pouvez mettre tout votre code dans un seul fichier. C'est plus rapide que d'utiliser Powershell. Ici et ici, des scripts plus avancés peuvent être trouvés (qui peuvent être utilisés comme fichiers externes).
Emulation de calculs de stylo et de papier, implémentations de fonctions mathématiques
- On peut trouver ici la bibliothèque mathématique la plus complète qui émule les calculs de stylo et de papier et qui permet de travailler avec des nombres plus importants.
- Voici d'autres exemples d'émulations de stylo et de papier: ADD , Comparison , Multiply
- Certaines implémentations de fonctions mathématiques peuvent être trouvées ici .