【问题标题】:batch: read env var from file and asign the value prompt批处理:从文件中读取 env var 并分配值提示
【发布时间】:2022-10-14 21:59:57
【问题描述】:

我有一个包含变量列表的文件。 我需要获取这些变量并询问用户他们想为每个变量分配什么值。 因此,使用用户输入的值设置这些环境变量。 我有这个。

@echo off
setlocal EnableExtensions EnableDelayedExpansion
cls
set "TEMP="

for /F "tokens=1,2 delims==" %%a in (file.txt) do (
    rem if "!TEMP!"=="" (SET TEMP=%%a) ELSE (SET TEMP=!TEMP!;%%a)
    SET TEMP=%%a
    echo Type %%b :
    set /p "PASS=>"%%b
    echo !TEMP!=!PASS! >> .mpo.txt
    SET /A "TEMP=!PASS!"
)

该文件如下所示:

VAR1
VAR2
VAR3

用户类型:价值1,价值2,价值3将其设置为 envvar 的结果应如下所示:

VAR1=value1
VAR2=value2
VAR3=value3

当然它不起作用。 有什么帮助吗?

【问题讨论】:

  • 我会从一开始就建议你不要覆盖内置的环境变量。请选择%TEMP% 以外的其他内容。
  • 那是真的...对我正在寻找的结果有任何帮助吗?

标签: batch-file cmd environment-variables


【解决方案1】:

我添加了一个额外的用于从文件中读取的内容:.mpo.txt

for /F "tokens=1,2 delims==" %%f in (.mpo.txt) do (
    setlocal
    SET /A "%%f=%%g"
)

这个想法是将此文件的行设置为 envvars

在里面为了在我这样做之前:

for /F "tokens=1,2 delims==" %%a in (file.txt) do (
    rem if "!TEMP!"=="" (SET TEMP=%%a) ELSE (SET TEMP=!TEMP!;%%a)
    SET TEMP=%%a
    echo Type %%b :
    set /p "PASS=>"%%b
    echo !TEMP!=!PASS! >> .mpo.txt
)
for /F "tokens=1,2 delims==" %%f in (.mpo.txt) do (
        setlocal
        SET /A "%%f=%%g"  rem ANY HELP HERE
    )

我在文件中找到了我正在寻找的结果。

VAR1=value1
VAR2=value2
VAR3=value3

但是如何将其设置为 env var?

【讨论】:

    猜你喜欢
    • 2013-09-21
    • 1970-01-01
    • 2015-11-21
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多