导入配置和设置变量。也可以用反斜杠替换正斜杠

时间:2017-06-01 15:55:48

标签: windows batch-file cmd

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

E.g。 variable=value

其中一些变量的路径值如C:/folder1。其他变量的值为file1.txt等文件名。

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

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

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

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

有没有办法可以转换包含路径的变量的斜杠,同时在文件名等中导入其他变量,没有任何问题?

2 个答案:

答案 0 :(得分:0)

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设置file1 = C:/folder1/file1.txt然后调用set "file1 = %% file1:/=\ %%"执行set "file1 = % file1:/=\ %",因为%%是转义的 - % (请注意,在本段中,我在命令执行中插入空格以强调)

请注意,已删除执行转换但前缀为当前目录的~f

答案 1 :(得分:0)

你可能会做这样的事情:

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

我可能会建议尽管在开头$%%A放置一些内容,以便您可以一次轻松访问所有变量Set $