我尝试从文本文件中导入变量。 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%
但是这不会从文本文件中删除编译器:。您可以提供的任何建议,无论是如何在“”中指定变量,或者如何从文本文件中删除字符串都会产生很大的影响。
非常感谢
答案 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%