Ошибка выполнения exe, когда путь содержит пробелы. - PullRequest
2 голосов
/ 28 июля 2011

Это работает:

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 ]

2 голосов
/ 29 июля 2011

Как изменить путь на путь тильды (без пробелов)

Поскольку у меня не установлен 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 голосов
/ 02 апреля 2012

Вы должны использовать кавычки для работы со строками ... но вы никогда не должны использовать пробелы рядом со знаком равенства:

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

Надеюсь, это поможет =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...