2011-07-28 69 views
1

這工作:當路徑有空格時執行exe文件時發出。

SET server=MyServer 
SET db=MyDb 

FOR /F "usebackq tokens=1" %%i IN (`sqlcmd -S %server% -d %db% -w200 -h-1 -E -Q "set nocount on; select REPORTING_DATE FROM dbo.CURRENT_REPORTING_DATE"`) DO set REPORTING_DATE=%%i 
ECHO The Reporting Date is %REPORTING_DATE% 

但是當我嘗試完全有資格SQLCMD路徑...

SET sqlcmdexe="C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" SET server=MyServer SET db=MyDb 

FOR /F "usebackq tokens=1" %%i IN (` %sqlcmdexe% -S %server% -d %db% 
-w200 -h-1 -E -Q "set nocount on; select REPORTING_DATE FROM dbo.CURRENT_REPORTING_DATE"`) DO set REPORTING_DATE=%%i ECHO The Reporting Date is %REPORTING_DATE% 

我得到的錯誤:

該系統找不到指定的路徑。

...大概是因爲文件夾名稱中的空格。

如何將路徑更改爲代字號路徑(無空格)或更好,請引用它以便該語句正確執行?

注意,有之前%sqlcmdexe%向後抽動,不知道爲什麼我沒有看到它,至少在IE6。是的,6!

+2

你可以使用'呼叫%sqlcmdexe %' – jeb

+2

[批處理文件:對於如果路徑中有空格/ F不起作用]的可能重複(http://stackoverflow.com/questions/6474738/batch-file-for-f-doesnt-work-if-path都具有一個-空格) –

+0

是您的通話招有啓發了我研究的基本問題 – jeb

回答

1

如何改變路徑,以波浪線路徑(W/O空間)

由於我沒有sqlcmd.exe安裝呢,我用不同的例子。例如,見這樣的:我的系統上

@echo off 
set sqlcmdexe=C:\Program Files\Internet Explorer\Connection Wizard\icwconn2.exe 
echo %sqlcmdexe% 

for /f "tokens=*" %%a in ("%sqlcmdexe%") do set sqlcmdexe=%%~sa 
echo %sqlcmdexe% 

運行,輸出爲:

C:\temp>envtest 
C:\Program Files\Internet Explorer\Connection Wizard\icwconn2.exe 
C:\PROGRA~1\INTERN~1\CONNEC~1\icwconn2.exe 

但我不知道是否能解決你的問題。

0

你必須使用引號處理字符串的工作...但你從來沒有使用等號旁邊的空間:

set "sqlcmdexe=c:\Program Files\Internet Explorer\Connection Wizard\icwconn2.exe" 
echo.%sqlcmdexe% 

希望它可以幫助=)

相關問題