为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森卡 2023-09-11 15:58:17
下面是我的小代码:场景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


查看完整回答
反对 回复 2023-09-11
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信