1

我最近发现我无法从批处理文件中触发以下命令:

for %%G in (%path%) do sqlcmd /S <my-server> /d <my-database> /E /i "%%G" -b

它告诉我,它找不到命令“sqlcmd”。但是,如果我直接在命令提示符下运行此命令(通过删除每对的 1%),它就可以工作!

为什么会这样,我怎样才能使它与我的批处理文件一起工作?

更新:

这是我在批处理文件中得到的以下代码:

@echo off
set mypath=%~dp0
set mypath=%mypath%sql

for %%G in ("%mypath%") do echo %%G & sqlcmd /S sample-server /d sample-database /E /i "%%G" -b

pause
4

2 回答 2

2

这是你的问题:

set path=%~dp0
set path="%path%sql\"

PATH 是 Windows 用于搜索可执行文件的目录序列,因此当您更改它时,sqlcmd将无法再找到。

只需使用另一个变量名。Mypath好像不错……

于 2013-04-17T14:43:06.580 回答
0

尝试这个:

for %%i in ("sqlcmd.exe") do "%%~$path:i" /S "my-server" /d "my-database" /E /i "%%~dp$path:i" -b

要检查您的路径设置,您可以使用以下代码:

@echo off&setlocal
set "temppath=%path:;=";"%"
for %%i in ("%temppath%") do echo %%~i
于 2013-04-17T13:49:51.650 回答