5

我知道我可以做到以下几点:

DECLARE @Tab CHAR(1)
SET @Tab = CHAR(9)
EXEC('xp_cmdshell ''echo ' + @Tab + 'Some text>> C:\test.txt'', NO_OUTPUT')

但是有没有办法在 1 行中做到这一点?即不需要声明和设置tab,直接在EXEC

4

2 回答 2

5

在一行中,但不删除声明。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)');
于 2012-08-20T12:33:19.057 回答
1

试试这个:

   declare @str varchar(500)= 'xp_cmdshell ''echo '+ char(9)+' Some text>>
   C:\test.txt'', NO_OUTPUT'
exec(@str)
于 2012-08-20T08:09:48.360 回答