在CMD中查找并设置为可变的特定文本

时间:2016-03-06 16:10:07

标签: variables batch-file cmd copy find

我正在创建一个批处理脚本,我需要一些帮助。我试图让批量自动识别iPhone版本,只需查看IPSW,例如:iPhone5,2_9.2.1_11D25_Restore.ipsw,我想将“5,2”设置为变量,但我需要先找到它。

提前致谢!

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "IPSW=iPhone5,2_9.2.1_11D25_Restore.ipsw"
FOR /f "delims=_" %%a IN ("%IPSW%") DO SET "iphoneversion=%%a"

IF "%iphoneversion:~0,6%"=="iPhone" (SET "iphoneversion=%iphoneversion:~6%") ELSE (SET iphoneversion=?)

ECHO iphoneversion=%iphoneversion%

GOTO :EOF

假设您已将IPSW设置为您需要的字符串(我使用您提供的字符串进行测试),那么上述例程将首先分配IPSW的部分,但不包括第一个_ 1}}到%%a,然后到iphoneversion

如果前6个字符正好是iPhone,那么前6个字符将被删除,否则该值将设置为?

答案 1 :(得分:0)

很高兴知道这些是文件名而不是文档中的文本;在这个问题之前,我不知道IPSW是什么。

这假设您在与脚本相同的目录中有多个IPSW文件。

@echo off
setlocal enabledelayedexpansion

for /f "tokens=1,2 delims=," %%A in ('dir /b *.ipsw') do (
    set iDevice=%%A
    set iVersion=%%B

    REM Take the last character before the comma and the first character after the comma
    set "device_version=!iDevice:~-1!,!iVersion:~0,1!"

    echo !device_version!
)