Для этого есть несколько решений, но я покажу вам наиболее общее, которое работает, если вы действительно хотите удалить первый токен:
@echo off
setlocal EnableDelayedExpansion
set "CHECKSUM_TOOL=fciv.exe"
set "DESTINATION_DIR=C:\Documents and Settings\Users\Desktop\testfolder
set "CHECKSUM=12345"
set "APP_NAME=price"
set "VERIFY_FILE=testfile.txt"
rem Loop to get the first token for substraction later:
for /F "delims=" %%A IN ('call "%CHECKSUM_TOOL%" -md5 "%DESTINATION_DIR%\%VERIFY_FILE%"') do (
set "output=%%A"
for /F "tokens=1" %%B IN ("%%A") do (
set "token_to_substract=%%B"
)
)
set "expected_output=!output:%token_to_substract% =!"
echo The string you wanted to obtain for a custom reason of yours is: %expected_output%
Более короткое, но не очень общее решение, будет:
@echo off
set "CHECKSUM_TOOL=fciv.exe"
set "DESTINATION_DIR=C:\Documents and Settings\Users\Desktop\testfolder
set "CHECKSUM=12345"
set "APP_NAME=price"
set "VERIFY_FILE=testfile.txt"
for /F "tokens=2 delims=:" %%A IN ('call "%CHECKSUM_TOOL%" -md5 "%DESTINATION_DIR%\%VERIFY_FILE%"') do (
set "expected_output=c:%%A"
)
echo The string you wanted to obtain for a custom reason of yours is: %expected_output%
Также возможно заменить последний цикл for /F
на следующий и с тем же значением:
for /F "tokens=2 delims=\" %%A IN ('call "%CHECKSUM_TOOL%" -md5 "%DESTINATION_DIR%\%VERIFY_FILE%"') do (
set "expected_output=c:\%%A"
)
echo The string you wanted to obtain for a custom reason of yours is: %expected_output%
, который делает то же самое(разница с предыдущим составляет 1 байт :)
).