使用Batch脚本删除文本文件中的字符串

时间:2016-10-27 12:29:02

标签: batch-file

我尝试从文本文件中导入变量。 Settings.txt将具有以下内容:

某些设置
编译器= “GCC”
Over settings

理想我想要做的是将gcc设置为稍后可以在命令中调用的变量。 我无法弄清楚如何做到这一点,所以我决定采取行,并在其他文本文件中更改它,并将其插入变量。这样的事情:

SET config=
SET temp=
for /f "delims=" %%x in ('findstr Compiler: settings.txt') do set temp=%%x
echo %temp% > figcon.txt
type figcon.txt | findstr /v Compiler:
SET congif=<figcon.txt
echo: %config%

但是这不会从文本文件中删除编译器:。您可以提供的任何建议,无论是如何在“”中指定变量,或者如何从文本文件中删除字符串都会产生很大的影响。
非常感谢

2 个答案:

答案 0 :(得分:0)

假设Settings.txt中有趣的行读取Compiler: "gcc",请使用以下代码:

for /F "tokens=2 delims=: " %%x in ('findstr /R /C:"^ *Compiler:" "Settings.txt"') do (
    set "Config=%%~x"
)
echo %Config%

(如果感兴趣的内容为Compiler="gcc",请将搜索字符^ *Compiler:替换为^ *Compiler=。)

此处,tokens的{​​{1}}和delims选项用于拆分读取字符串。 for /F变量的~修饰符会删除周围的引号,因此变量for /F最终会保留Config

gcc的搜索字符串已得到改进,因此findstr之类的内容不会构成匹配。允许领先的空间;如果您不想这样做,请将其更改为MyCompiler:(或^Compiler:)。

^Compiler=语法已得到改进,以避免潜在的特殊字符出现问题,整个赋值表达式都用引号括起来。

顺便说一下:在您的代码中,您使用的是变量名set;我建议不要这样做,因为这是一个系统保留变量,包含指向临时目录的路径。

答案 1 :(得分:0)

您可以直接ASS直接查看 setting.txt 的变种:

set

将返回for /f "delims=" %%a in (setting.txt) do set %%a echo Compiler value = %Compiler% 作为值

使用第一个代码所有,将设置 setting.txt 的值。

如果您需要 "gcc"

%compiler%