我最近发现我无法从批处理文件中触发以下命令:
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
答案 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