如何使用cmd从文件(文本)打印特定行(包含变量)

时间:2015-03-14 11:38:15

标签: windows batch-file printing 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

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

  

" 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_FOLDER\system\build.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:\Kitchen\temp
copy C:\Kitchen\WORKING_FOLDER\system\build.prop C:\Kitchen\temp
cd C:\Kitchen\temp
cd C:\Kitchen\WORKING_FOLDER\system
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:\Kitchen\temp\build.prop.new 
C:\Kitchen\WORKING_FOLDER\system\build.prop >nul
echo Changed value of ro.build.display.id to " %name% "
echo.
set "build.prop="
for /F "skip=3 delims=" %%i in (WORKING_FOLDER\system\build.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%

正如您在第一行中看到的那样,我使用行命令功能打印名称,并且还从用户输入更改名称,以便更容易打印文件名,但在其他一些文件中,行" ro .build.display.id"并不总是在第四。 所以我的问题是,为了在屏幕上打印我希望打印的特定术语,可以做什么逻辑或者其他什么没有提示用户输入新文件名只打印特定信息

例如我想要的输出

  

Android版本为" 4.4.4"

EG说我要打印" 4.4.4"仅来自上面的文件 我该怎么做? 使用findstr或任何东西请帮助我们真的很感激。

1 个答案:

答案 0 :(得分:0)

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

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

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