/ f delims的批处理文件

时间:2015-02-27 00:48:27

标签: batch-file for-loop

我收到了这个脚本,但这给了我一个不应该

的值
    FOR /F "delims=" %%i IN ('fastboot oem get_unlock_data 2^>^&1') DO if ("!out!"=="") (set out=%%i) else (set out=!out!%lf%%%i)
set unlockkey=%out:~18,31%%out:~63,31%%out:~108,31%%out:~153,31%%out:~198,7%
ECHO %unlockkey%
pause

命令本身给我一个这样的结果:

(bootloader) 3A95030005785963#5A583142323239
(bootloader) 46393400585431303231000000#CEA2
(bootloader) 1CAEF1B646B1C65B3B6B9492C88CFAB
(bootloader) 304FF#8B734A0312000000000000000
(bootloader) 0000000

OKAY [  0.296s]
finished. total time: 0.291s

批次应该给我一个这样的结果:

0A40040192024205#4C4D355631323030373731363031303332323239#BD008A672BA4746C2CE02328A2AC0C39F951A3E5#1F532800020000000000000000000000

但我得到了这个结果:

al time: 0.291s

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "unlockkey="
FOR /F "tokens=1,2" %%a IN ('fastboot oem get_unlock_data 2^>^&1') DO if "%%a"=="(bootloader)" set "unlockkey=!unlockkey!%%b"
ECHO %unlockkey%
GOTO :EOF

这应该产生我想要的结果。

很难知道 - 因为您显示的结果显然与提供的数据无关。您的示例数据中没有0A40

变量lf未在代码中设置。它可能应该是换行符,但没有明显的理由插入它。

提供足够的代码以便能够重现问题非常重要。 setlocal很重要,但已从发布的代码中删除。