我有一个配置文件,其中有几个带有值的变量名。
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
有没有办法可以转换包含路径的变量的斜杠,同时在文件名等中导入其他变量,没有任何问题?
答案 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 $
。