下面是我的小代码:场景1declare @DataToWrite varchar(8000)set @DataToWrite='<html><body><h1>This is a Heading</h1></body></html>'DECLARE @CommandL1 varchar(8000)SET @CommandL1 = 'echo'+@DataToWrite+'> D:\logs\Logs\HTMLFile.html'print CommandL1 exec master..xp_cmdshell @CommandL1在 SSMS 查询窗口中执行后,结果如下:SSMS 的结果选项卡:**< was unexpected at this time.**SSMS 的消息选项卡:echo<html><body><h1>This is a Heading</h1></body></html>> D:\logs\Logs\HTMLFile.html(2 row(s) affected)为什么它不允许我将此 HTML 代码写入 .html 文件?场景2下面的代码运行良好并在所需位置生成 HTML 文件:declare @DataToWrite varchar(8000)set @DataToWrite='t'DECLARE @CommandL1 varchar(8000)SET @CommandL1 = 'echo '+@DataToWrite+'> D:\logs\Logs\HTMLFile.html'print @CommandL1 exec master..xp_cmdshell @CommandL1笔记:请不要与“这是一个标题”混淆。Stackoverflow 编辑器正在对其进行转换。
1 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
有两个问题:
您错过了echo和 字符串变量之间的空格@DataToWrite。
如果没有以下内容,则无法引用变量@
print CommandL1
它应该是
print @CommandL1
您还需要转义(使用 ^)字符串中的特殊字符(标签),以便在命令行中打印它们或将它们写入文件中。
尝试以下操作:
declare @DataToWrite varchar(8000)
set @DataToWrite='<html><body><h1>This is a Heading</h1></body></html>'
DECLARE @CommandL1 varchar(8000)
SET @CommandL1 = 'echo '+REPLACE(REPLACE(@DataToWrite, '<', '^<'), '>', '^>')+' > D:\logs\Logs\HTMLFile.html'
print @CommandL1
exec master..xp_cmdshell @CommandL1
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消