Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 当路径有空格时,执行exe时出现问题。_Batch File_Sqlcmd - Fatal编程技术网

Batch file 当路径有空格时,执行exe时出现问题。

Batch file 当路径有空格时,执行exe时出现问题。,batch-file,sqlcmd,Batch File,Sqlcmd,这项工作: 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 %R

这项工作:

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%之前有一个向后的tic,我不知道为什么我看不到它,至少在IE6中是这样。是的,6

如何将路径更改为平铺路径(不带空格)

由于我没有安装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

但我不知道这是否解决了您的问题。

您必须使用引号来处理字符串。。。但您从未使用过等号旁边的空格:

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

希望它有帮助=)

您可以使用
调用%sqlcmdexe%
可能重复的Yes您的调用技巧启发我检查潜在的问题