如何使用cmd打印文件(文本)中的特定行(包括变量)



我真的很困惑。我正在制作一个批处理文件,可以显示我想要的特定行。例如,有文件hi.txt

文件内容 -

ro.build.id=KOT49H
ro.build.display.id=XXX_ROM_v1
ro.build.version.incremental=eng.mudingyu.1408084583
ro.custom.build.version=XOLO_8x-1000_0815.v009
ro.internal.version=J608_XOLO_N1A_V0.8.7_S08015
ro.internal.version.rgk=J608_XOLO_N1A_V0.8.7_S08015
ro.build.version.sdk=19
ro.build.version.codename=REL
ro.build.version.release=4.4.4
ro.build.date=Fri Aug 15 14:39:45 CST 2014
ro.build.date.utc=1408084785

在这里,您可以看到文件内容。现在假设我只想在执行批处理时在屏幕上打印这条信息

"4.4.4"

来自此行"ro.build.version.release=4.4.4"

我设法为第二行提取代码

ro.build.display.id=XXX_ROM_v1

当我执行批处理时,我看到这个

XXX_ROM_V1

我使用的代码

set "build.prop="
for /F "skip=3 delims=" %%i in (WORKING_FOLDERsystembuild.prop) do if not 
defined build.prop set "build.prop=%%i"
echo.
echo "%build.prop%"
echo.
echo Enter the name you want to choose
set /p name=
echo Backing up old build.prop...
md C:Kitchentemp
copy C:KitchenWORKING_FOLDERsystembuild.prop C:Kitchentemp
cd C:Kitchentemp
cd C:KitchenWORKING_FOLDERsystem
build.prop.new (
for /f "tokens=1* delims==" %%A in (build.prop) do (
   if "%%A" == "ro.build.display.id" (
     echo ro.build.display.id=%name%
   ) else (
     echo %%A=%%B
   )
 )
)
move /y build.prop.new build.prop >nul
build.prop.new (
  for /f "tokens=1* delims==" %%A in (build.prop) do (
    if "%%A" == "ro.build.id" (
     echo ro.build.id=%name%
   ) else (
     echo %%A=%%B
   )
 )
)
move /y C:Kitchentempbuild.prop.new 
C:KitchenWORKING_FOLDERsystembuild.prop >nul
echo Changed value of ro.build.display.id to " %name% "
echo.
set "build.prop="
for /F "skip=3 delims=" %%i in (WORKING_FOLDERsystembuild.prop) do if not 
defined build.prop set "build.prop=%%i"
echo In build.prop now the current name of ROM is
echo.
echo Current ROM Name = %name%

正如您在第一行中看到的那样,我使用line命令功能打印名称,并且还从用户那里获取了更改名称的输入,因此打印文件名变得容易,但在其他一些文件中,"ro.build.display.id"行并不总是在第4行。所以我的问题是可以做什么逻辑或任何操作才能在屏幕上打印我希望打印的特定术语,而无需提示用户输入新文件名,只需打印该特定信息

例如我想要的输出

安卓版本是"4.4.4"

EG 说我只想从上面的文件中打印"4.4.4"我该怎么做?使用findstr或任何东西,请帮助真的非常感谢。

呜 - 对于一个非常简单的问题来说,这需要阅读很多。

for /f "tokens=2 delims==" %%i in ('find "ro.build.version.release" hi.txt') do set release=%%i
echo The Android version is "%release%"

找到正确的行并使用=作为分隔符对其进行标记。

最新更新