Skip to content

How to Convert Pounds to Kilograms and Vice Versa in Batch Script

Learn how to accurately convert between pounds (lbs) and kilograms (kg) in Windows Batch scripts using scaled-integer math for logistics, shipping, and automation.

Weight conversion between Pounds (lbs) and Kilograms (kg) is a common requirement for logistics, shipping, and health-related automation scripts. Like all unit conversions in Batch, the challenge lies in handling the decimal conversion factor using integer-only arithmetic.

In this guide, we will demonstrate how to convert between pounds and kilograms using scaled-integer math.

The Conversion Factors

  • Pounds to Kilograms: kg = lbs × 0.453592
  • Kilograms to Pounds: lbs = kg × 2.20462

Scaled for Batch integer math:

  • kg ≈ lbs × 454 / 1000
  • lbs ≈ kg × 2205 / 1000

Implementation Script

@echo off
setlocal enabledelayedexpansion

:menu
cls
echo ============================
echo      WEIGHT CONVERTER
echo ============================
echo 1. Pounds (lbs^) to Kilograms (kg^)
echo 2. Kilograms (kg^) to Pounds (lbs^)
echo 3. Exit
echo.
set "choice="
set /p "choice=Select (1-3): "

if "%choice%"=="1" goto :lbs2kg
if "%choice%"=="2" goto :kg2lbs
if "%choice%"=="3" exit /b
goto :menu

:lbs2kg
set "input="
set /p "input=Enter lbs: "
if not defined input goto :menu

:: Call math function: %1=value, %2=multiplier(scaled by 1000), %3=unit
call :convert "%input%" 454 "kg"
pause
goto :menu

:kg2lbs
set "input="
set /p "input=Enter kg: "
if not defined input goto :menu

:: Call math function: %1=value, %2=multiplier(scaled by 1000), %3=unit
call :convert "%input%" 2205 "lbs"
pause
goto :menu

:convert
set "val=%~1"
set "mult=%~2"
set "unit=%~3"

:: Normalize: Ensure leading zero for values like .5
if "!val:~0,1!"=="." set "val=0!val!"

:: Split into integer and decimal
set "int=" & set "dec="
for /f "tokens=1,2 delims=." %%A in ("!val!") do (
    set "int=%%A"
    set "dec=%%B00"
)
if not defined dec (
    :: This handles inputs like "5" or "5."
    for /f "delims=." %%A in ("!val!") do set "int=%%A"
    set "dec=00"
)
set "dec=!dec:~0,2!"

:: Strip leading zeros from integer part to avoid the Octal Trap (e.g. 08, 09)
:strip_loop
if "!int:~0,1!"=="0" if "!int!" neq "0" (
    set "int=!int:~1!"
    goto :strip_loop
)

:: Combine to a single scaled integer (Input * 100)
set /a "scaled=int * 100 + 1!dec! - 100" 2>nul

:: Sanity check for non-numeric or overflow
if !errorlevel! neq 0 (
    echo [ERROR] Invalid numeric input.
    exit /b
)

:: Perform conversion (Scaled by 100000)
set /a "result=scaled * mult" 2>nul
if !errorlevel! neq 0 (
    echo [ERROR] Input value is too large for processing.
    exit /b
)

set /a "whole=result / 100000"
set /a "frac=(result %% 100000) / 1000"
if !frac! lss 10 set "frac=0!frac!"

echo.
echo !val! is approximately !whole!.!frac! !unit!.
exit /b

Why Convert Weight Units in Batch?

  1. Shipping Automation: International shipping labels often require weight in both kilograms and pounds.
  2. Inventory Management: If your warehouse system tracks weights in pounds but your reporting standard is metric, automated conversion saves time.
  3. Health & Safety: Scripts that process body weight data or load limits for equipment may need to work in both unit systems.

Important Limitations

PowerShell for Precision

@echo off
setlocal enabledelayedexpansion

set /p "lbs=Enter Pounds (lbs): "
if not defined lbs exit /b

:: Perform conversion using PowerShell (safe and accurate for decimals)
for /f "usebackq" %%R in (`
    powershell -NoProfile -Command ^
    "$v = ($env:lbs -replace ',', '.') -as [double]; if ($v -ne $null) { [math]::Round($v * 0.453592, 2) } else { exit 1 }"
`) do (
    set "kg=%%R"
)

:: Check if PowerShell exit code indicated failure
if %errorlevel% neq 0 (
    echo [ERROR] "!lbs!" is not a valid number.
    pause
    exit /b 1
)

echo !lbs! lbs is approximately !kg! kg.
pause

Best Practices

  1. Higher Precision: For better accuracy without PowerShell, use a scale of 10000 instead of 1000: set /a "result=val * 4536 / 10000".
  2. Input Validation: Always verify that the user enters a positive number before starting the conversion.

Conclusion

Converting between pounds and kilograms is a straightforward but essential utility for any script handling international data. By using scaled-integer arithmetic, you achieve a practical level of accuracy within Batch's integer constraints. For applications requiring exact decimal precision, the PowerShell bridge provides a seamless fallback, ensuring your weight conversion tools are both versatile and reliable.

Navigation