使用 exec master..xp_cmdshell 写入 .html 文件

下面是我的小代码:


场景1


declare @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 编辑器正在对其进行转换。


慕森卡
浏览 90回答 1
1回答

慕田峪9158850

有两个问题:您错过了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&nbsp;exec master..xp_cmdshell @CommandL1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5