2017-06-01 45 views
0

我有了一個值幾個變量名的配置文件。導入配置和設置變量。同時更換正斜槓反斜槓

E.g. 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

有沒有一種方法,我可以轉換爲斜線有路徑中的變量,而進口在文件名等其他變量,沒有任何問題?

回答

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已被刪除。

+0

這也正是我問。謝謝! – Bob

0

您可能能夠做這樣的事情:

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

我可能會建議將雖然在事情開始$%%A,讓您可以輕鬆地訪問所有變量的一次從而Set $