使用 exec master..xp_cmdshell 写入 .html 文件
Write to .html file with exec master..xp_cmdshell
下面是我的小代码:
场景一
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 查询中执行后 Window 结果如下:
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 文件?
场景二
下面的代码运行良好并在所需位置生成 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
注:
请不要与 "This Is a Heading" 混淆。 Whosebug 编辑器正在转换它。
有两个问题:
您在 echo
和字符串变量 @DataToWrite
之间遗漏了 space。
你不能引用没有@
的变量
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
下面是我的小代码:
场景一
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 查询中执行后 Window 结果如下:
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 文件?
场景二
下面的代码运行良好并在所需位置生成 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
注:
请不要与 "This Is a Heading" 混淆。 Whosebug 编辑器正在转换它。
有两个问题:
您在 echo
和字符串变量 @DataToWrite
之间遗漏了 space。
你不能引用没有@
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