SQLCMD在for循环中

时间:2013-04-17 13:29:33

标签: for-loop batch-file iteration sqlcmd

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

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

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

为什么会这样,我如何才能使用我的批处理文件?

更新

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

@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

2 个答案:

答案 0 :(得分:1)

这是你的问题:

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

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

只需使用其他变量名称即可。 Mypath似乎很好......

答案 1 :(得分: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