2015-05-11 30 views
0

我已經運行我的腳本以將數據庫名稱存入變量以檢查某些條件。但是當我運行腳本並測試回顯變量時,它不起作用。請看看我的編碼:批處理腳本將數據庫名稱獲取到變量中

%mysql% -u%dbuser% -p%dbpass% -s -N -e "SHOW DATABASES" | FOR /F "usebackq" %%D IN (`findstr /V "information_schema performance_schema mysql test"`) DO SET dbname=%%D echo %dbname% 

結果是:

SET dbname=mydatabasename echo 

我已經把一個命令SETLOCAL對腳本的頭,但沒有運氣。

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

誰能幫助我得到正確的命令?

回答

0

你不能像你寫的那樣在同一行上有兩個單獨的命令。你有兩個選擇:

方法1:使用括號來創建一個代碼塊

setlocal enabledelayedexpansion 
for /f "usebackq" %%d in (`findstr /V "information_schema performance_schema mysql test"`) do (
    set dbname=%%d 
    echo !dbname! 
) 

請注意,您需要啓用延遲擴展和使用!而不是%來調用獲取設置代碼塊的內部變量。

選項2:使用&來加入這兩個命令。

for /f "usebackq" %%d in (`findstr /V "information_schema performance_schema mysql test"`) do set dbname=%%d&echo %dbname% 
相關問題