【问题标题】:batch file for /f delims/f delims 的批处理文件
【发布时间】:2015-02-27 00:48:26
【问题描述】:

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

    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

【问题讨论】:

    标签: batch-file for-loop


    【解决方案1】:
    @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 很重要,但在您发布的代码中省略了。

    【讨论】:

    • 非常感谢你正是我想要的,就像我说的我对此一无所知,你给我的台词就是我想要的
    猜你喜欢
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多