我有i.a.變量,如:批處理腳本中的變量轉義字符
SET CURRHOST=myServer
SET CURRCOMPANY=myCompany
SET CURRDB=string!string=string!string=string
後我設置此變量:
SET NAME=%CURRHOST%\%CURRCOMPANY%\%CURRDB%
我還使用上述其它變量的變量。但現在我的問題是,腳本認爲我的CURRDB變量是一個命令。
我試圖逃跑變量像
SETLOCAL ENABLEDELAYEDEXPANSION
SET CURRDB=string^^!string^^=string^^!string^^=string
,然後在其他變量使用這個變量與
!CURRDB!
但它不工作。它也消除了!字符和=字符之間的字符串。
那麼如何在CURRDB變量中轉義這個字符。
編輯:
什麼,我想exaktly做:
SETLOCAL ENABLEDELAYEDEXPANSION
set CURRHOST=myServer
set CURRCOMPANY=myCompany
set CURRDBASE=string!string=string!string=string
set CURRSQLCMD="C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn"
set CURRFILETREE=E:\SWF_DBankBackup\MSSQL2012
後,我用這些變量obove其他變量:
set DateiName=%CURRHOST%_%CURRDBASE%_BackupCurrent
set Backuppath=%CURRFILETREE%\%CURRCOMPANY%\%CURRDBASE%
set BackupSkript=%Backuppath%\BackupCurrentScript\%DateiName%_Full_Script.sql
set BackupBAKpath=%Backuppath%\Current
set BackupTXTpath=%Backuppath%\Current\txt
但問題是變量CURRDB。腳本將它作爲命令處理,因爲它們是人物!和=在字符串中。所以我得到一個錯誤,在cmd 'testtest' is not recognized as an internal or external command, operable programm or batch file.
所以它看起來像腳本從變量中刪除!
和=
。
那麼我該如何逃避變量中的!
和=
?
不要在'SET'命令周圍使用空格。使用'SET CURRDB = string ...',否則你得到的變量名的空間類似'CURRDB' –
jeb
刪除'='周圍的空格;否則它將成爲變量名稱和字符串值的一部分... – aschipfl
我的腳本中沒有空格。我只是在這裏用它來表現奇特。 –