![](/img/trans.png)
[英]How to write an error message from an BCP operation to a log file and stop processing the batch file.
[英]SQLCMD error in Batch file. Invalid Filename
echo off
if "%4" == "" goto usage
cd %3
mkdir Logs
echo Logs can be found in %3\Logs
echo
goto %4
:smmdsp
echo Updating %2..xyz table on %1
sqlcmd -S %1 -E -p -e -d %2 -i "%3\xyz.SQL" > %3\Logs\xyz.SQL.log
goto done
:usage
echo.
echo Usage
echo.
echo where SqlServer = SQL Server name
echo Database = configuration database
echo InstallPath = path to the software update files
echo Feature = Feature to update
echo.
:done
如果我在 C 驱动器 C:\\XYZ 中有批处理文件,则此脚本有效,但是如果路径中有空格,或者它在程序文件 86 文件夹 C:\\Program Files (x86) 中。它会给出一个错误,指出
如何处理这种情况......? 谢谢
好的,这就是答案。
在我作为专业程序员的几十年经验中,我了解到大多数不容易解决的错误并不难,因为问题本身很困难,但由于人性,我们对代码中的元素做出了完全不正确的假设,但由于这种先天的假设,我们无法“看到”它。 为了在我们自己的行为中加剧这种错误,一旦我们发现我们思维过程中的错误,我们往往会不好意思告诉别人问题的根源是什么。
在我职业生涯的这个阶段......我没有什么需要证明的了,我更关心的是为他人节省宝贵的编码时间的痛苦和浪费。
这是一种阴险的事情,主要是由于 Microsoft 冒昧,默认情况下从视图中删除文件扩展名。 ...grrr 我今天把我的 xanax 留在家里了。
我在这里所做的,假设我试图用作 sqlcmd 调用的参数的文件名是 ... -ic:\\temp\\myscript.sql
而我完全错了。 我试图引用的文件是
c:\\temp\\myscript.sql。 文本
但是微软试图帮助我从文件资源管理器的视图中删除实际的扩展名,并欺骗我认为我有正确的文件名。 我没有。 一旦我意识到我更正了文件名,然后我的代码引用就正确了,一切都完美无缺。
尝试使用字符串:
sqlcmd -S "%1" -E -p -e -d %2 -i "%3\xyz.SQL" > %3\Logs\xyz.SQL.log
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.