I found a solution.
This is based on git "bash.exe" command. The follow instructions show you how I obtaine my scope in only few steps. For first I create a sh script calles "FW_version.sh", and I placed on the project root:

the content of "FW_version.sh" is the follow:.
#!/bin/bash
export LC_ALL=en_US.UTF-8
# Path to the config.h file
HEADER_FILE="Core/Inc/main.h"
# Path to the build output
BUILD_DIR="Debug" # or "Release", depending on your build configuration
OUTPUT_FILE="${BUILD_DIR}/TestProject.hex" # Adjust to match your output artifact
# Extract the GUI_MAJOR_VER, GUI_MINOR_VER, and GUI_LETTER_VER values
echo "Extracting GUI_MAJOR_VER..."
VERSION_MAJOR=$(grep -oP 'GUI_MAJOR_VER \s*\K\d+' "$HEADER_FILE")
echo "Extracted GUI_MAJOR_VER: $VERSION_MAJOR"
echo "Extracting GUI_MINOR_VER..."
VERSION_MINOR=$(grep -oP 'GUI_MINOR_VER \s*\K\d+' "$HEADER_FILE")
echo "Extracted GUI_MINOR_VER: $VERSION_MINOR"
echo "Extracting GUI_LETTER_VER..."
VERSION_LETTER=$(grep -oP 'GUI_LETTER_VER \s*\K\d+' "$HEADER_FILE")
echo "Extracted GUI_LETTER_VER: $VERSION_LETTER"
# Check if all version values were found
if [ -z "$VERSION_MAJOR" ] || [ -z "$VERSION_MINOR" ] || [ -z "$VERSION_LETTER" ]; then
echo "Error: One or more version constants not found in $HEADER_FILE"
exit 1
fi
# Construct the full version string (e.g., v_1.23)
VERSION="${VERSION_MAJOR}_${VERSION_MINOR}${VERSION_LETTER}"
# Define the new artifact name based on the extracted version
ARTIFACT_NAME="${BUILD_DIR}/TestProject_v${VERSION}.hex"
# Rename the generated firmware (I.E. firmware.hex -> firmware_0.13.hex)
if [ -f "${BUILD_DIR}/TestProject.hex" ]; then
mv "$OUTPUT_FILE" "$ARTIFACT_NAME"
echo "Firmware renamed to: $ARTIFACT_NAME"
else
echo "Error: Compiled FW not found"
exit 1
fi
Second step is to create a new builder and inserting it into the project:

So, right click on the project, properties --> Builders --> New.
Compile the step 1,2 ,3 with your preference:
"1" is the "bash.exe" program present on GIT folders
"2" is your project folder
"3" is the script locations (I.E. = ${workspace_loc:/TestProject/FW_version.sh} ) [pay attention to the syntax]

Last step is compile your post-build command with : ${workspace_loc:/TestProject/.externalToolBuilders/RenameArtifact} [pay attention to the syntax]

if everything works correctly, when you compile your code you will obtain the following result:

(in my case I used the script on the debug configuration. if you need, change it to release or something else configuration).