【问题标题】:How to print a specific line (variable included) from a file (text) using cmd如何使用 cmd 从文件(文本)中打印特定行(包括变量)
【发布时间】:2015-03-14 11:38:14
【问题描述】:

我真的对某些事情感到困惑。我正在制作一个可以显示我想要的特定行的批处理文件。例如有文件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

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

“ro.build.version.release=4.4.4”这一行中的“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”并不总是在第 4 位。 所以我的问题是,为了在屏幕上打印我希望打印的特定术语而不提示用户输入新文件名,可以执行什么逻辑或任何操作,只需打印该特定信息

例如我想要的输出

Android版本为“4.4.4”

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

【问题讨论】:

  • 才10分钟。耐心点;您可能要等待几个小时才能获得任何帮助。

标签: windows batch-file printing cmd


【解决方案1】:

哇 - 对于一个非常简单的问题,阅读量很大。

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

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

【讨论】:

  • 我的我很抱歉!我在 Windows 脚本方面不是那么好。我对所有这些都是新手抱歉写得太长了。会尝试报告
  • @Ramen:一个好的问题可以最大限度地提高获得好的快速答案的机会。看看here
  • 非常感谢先生!有效! :D 下次发帖我会记住的!另一件事是,代码可能会读取变量并打印文本,就像它在整个文档中搜索具有 ro.build.version.release 的行并获得正确的行本身一样
  • 纯批处理无法直接修改文件。但是您可以使用临时文件。看看this question。两个答案都很好(即使没有一个被接受或赞成)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 2014-03-26
  • 1970-01-01
相关资源
最近更新 更多