【问题标题】:Import configuration and set variables. Also replace forward slash to backslash导入配置并设置变量。还将正斜杠替换为反斜杠
【发布时间】:2017-06-01 15:55:47
【问题描述】:

我有一个配置文件,其中有几个变量名和一个值。

例如variable=value

其中一些变量具有C:/folder1 之类的路径值。其他变量的值是像file1.txt 这样的文件名。

现在路径值有正斜杠,因为我对 shell 脚本使用相同的配置文件。因此,我必须将此批处理脚本的正斜杠转换为反斜杠。

当我运行下面的命令时,它会将所有配置变量及其值导入我的批处理文件,同时还转换斜杠:

for /f "delims== tokens=1*" %%A in (config\config.sh) do (set "%%A=%%~fB")

虽然这很有效,但非路径值会受到影响。因此,例如,带有文件名的变量在获得一个预先固定的路径。 所以不是file1=file1.txt,而是file1=C:\folder1\file1.txt

有没有一种方法可以转换具有路径的变量的斜杠,同时导入带有文件名的其他变量等,没有任何问题?

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:
    for /f "delims== tokens=1*" %%A in (q44312204.txt) do set "%%A=%%B"& CALL SET "%%A=%%%%A:/=\%%"
    

    我使用了一个名为 q44312204.txt 的文件,其中包含一些用于测试的虚拟数据。

    将变量%%A 设置为一个值后,call%%A 设置为%% %%A:/=\ %%,其中%%A=file1 和%%B=C:/folder1/file1.txt 设置@987654329 @=C:/folder1/file1.txt 然后调用set "file1 = %% file1:/=\ %%" 执行set "file1 = % file1:/=\ %" 因为%% 是一个转义-% (请注意,在本段中,我在执行命令中插入空格以强调)

    注意 ~f 正在执行转换但当前目录的前缀已被删除。

    【讨论】:

    • 这完全符合我的要求。谢谢!
    【解决方案2】:

    你也许可以这样做:

    @Echo Off
    SetLocal EnableDelayedExpansion
    For /F "UseBackQ Tokens=1* Delims==" %%A In ("config\config.sh") Do (Set "_=%%B"
        Set "%%A=!_:/=\!")
    

    我可能会建议尽管在开头放置一些东西 $%%A 这样您就可以轻松地一次访问所有变量,因此 Set $

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 2013-11-14
      • 2013-04-15
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多