我正在尝试使用xp_cmdshell发送“copy-item”命令来移动我之前在sproc中加密的项目。在sproc中,我创建一个.bat文件,作为计划任务执行,以进行加密。
我尝试使用相同的方法执行copy-item命令,以及基本的EXEC xp_cmdshell命令,但两者都不起作用。知道为什么它可以用来执行gpg,但是当我尝试执行copy-item命令时却不行吗?
这是我尝试过的:
set @cmd = 'copy-file c:\MissionControlDocs\'+@docFolder+@rawfilenamewoext+'.txt.gpg y:\aep-ohio>> ' + @batchFileName)
exec master..xp_cmdshell @cmd, no_output
并将命令选择到批处理文件中,然后调用任务(在服务器上成功运行):
select @cmd = rtrim('echo copy-file c:\MissionControlDocs\'+@docFolder+@rawfilenamewoext+'.txt.gpg y:\aep-ohio>> ' + @batchFileName)
exec master..xp_cmdshell @cmd, no_output
当我直接在服务器上的powershell应用程序中运行它时,复制文件也可以工作 - 无论我目前在哪个目录。
非常感谢您的想法。
答案 0 :(得分:0)
分两部分找到答案。
首先,我使用的是copy-item(实际上是powershell,而不是cmdshell)。
其次,我能够将复制行添加到我的.bat文件中,方法是将START / wait添加到上一行,以便在上一个命令完成之前我的拷贝行不会执行。