batch-file
Bypassare le limitazioni aritmetiche nei file batch
Ricerca…
introduzione
I file batch consentono solo calcoli integer a 32 bit, sebbene questo possa essere bypassato con approcci diversi.
Utilizzando PowerShell
Poiché PowerShell viene installato di default su ogni sistema Windows dal 7/2008 in poi può essere utilizzato per calcoli più complessi:
@echo off
set "expression=(2+3)*10/1000"
for /f %%# in ('"powershell %expression%"') do set result=%%#
echo %result%
Presta attenzione alle doppie virgolette addizionali in for /f
che evitano che le parentesi siano in conflitto con la sintassi del comando for.
Il problema potenziale è che PowerShell è molto più lento rispetto all'utilizzo di wsh / vbscript / jscript a causa del caricamento del .net framerwork
Usando jscript
WSH/JScript
è installato su ogni sistema Windows poiché NT, quindi utilizzarlo per calcoli più complessi, lo rende piuttosto portatile. JScript è più facile da combinare con il file 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)));
Con questo approccio è possibile inserire l'intero codice in un unico file. È più veloce rispetto all'utilizzo di PowerShell. Qui e qui possono essere trovati script più avanzati (che possono essere usati come file esterni).
Emulazione di calcoli di carta e penna, implementazioni di funzioni matematiche
- Qui può essere trovata la libreria matematica più completa che emula calcoli di carta e penna e consente di lavorare con numeri più grandi.
- Ecco altri esempi di emulazioni penna e carta: ADD , Comparison , Multiply
- Alcune implementazioni di funzioni matematiche possono essere trovate qui .