我知道我可以做到以下几点:
DECLARE @Tab CHAR(1)
SET @Tab = CHAR(9)
EXEC('xp_cmdshell ''echo ' + @Tab + 'Some text>> C:\test.txt'', NO_OUTPUT')
但是有没有办法在 1 行中做到这一点?即不需要声明和设置tab,直接在EXEC
?
我知道我可以做到以下几点:
DECLARE @Tab CHAR(1)
SET @Tab = CHAR(9)
EXEC('xp_cmdshell ''echo ' + @Tab + 'Some text>> C:\test.txt'', NO_OUTPUT')
但是有没有办法在 1 行中做到这一点?即不需要声明和设置tab,直接在EXEC
?
在一行中,但不删除声明。EXEC 和 sp_executesql 不允许在命令或参数中使用函数调用。因此,您需要声明一个字符串变量以在命令中插入 CHAR(9):
exec('DECLARE @str varCHAR(200);
set @str = ''xp_cmdshell ''''echo '' + CHAR(9) + ''Some text>> C:\test.txt'''', NO_OUTPUT'';
EXEC(@str)');
试试这个:
declare @str varchar(500)= 'xp_cmdshell ''echo '+ char(9)+' Some text>>
C:\test.txt'', NO_OUTPUT'
exec(@str)