これを試してみてください
1)以下のようにspを作成します
CREATE PROCEDURE dbo.ListPathsXML
@FileSpec VARCHAR(2000),
@order VARCHAR (80) = '/O-D',--sort by date time oldest first
@xmlFileList XML OUTPUT
AS
DECLARE @myfiles TABLE (MyID INT IDENTITY(1,1) PRIMARY KEY, FullPath VARCHAR(2000))
DECLARE @CommandLine VARCHAR(4000)
IF @order IS NOT NULL -- abort if the order is silly
BEGIN
SELECT @CommandLine =LEFT('dir "' + @FileSpec + '" /A-D /B /S '+@order,4000)
INSERT INTO @MyFiles (FullPath)
EXECUTE xp_cmdshell @CommandLine
DELETE FROM @MyFiles WHERE fullpath IS NULL
OR fullpath = 'File Not Found'
END
SET @xmlFileList = (SELECT fullpath FROM @MyFiles
FOR
XML PATH('thefile'),
ROOT('thefiles'),
TYPE)
2)次に、ファイルの名前を置き換えるディレクトリの名前を指定します
DECLARE @LotsOfText NVARCHAR(MAX),
@ii INT,
@iiMax INT,
@File VARCHAR(2000),
@Command NVARCHAR(4000)
DECLARE @files TABLE (MyID INT IDENTITY(1,1) PRIMARY KEY, [Path] VARCHAR(2000))
DECLARE @FileList XML
EXECUTE ListPathsXML 'D:\QAconfig\',
DEFAULT , @XMLFileList = @FileList OUTPUT
INSERT INTO @files(path)
SELECT x.thefile.value('fullpath[1]', 'varchar(2000)') AS [path]
FROM @FileList.nodes('//thefiles/thefile') AS x ( thefile )
--don't look at the current errorlog!
SELECT @ii=1, @iiMax=MAX(MyID) FROM @Files
WHILE @ii<=@iiMax
BEGIN
SELECT @File= [path] FROM @files WHERE MyID=@ii
print @File
SELECT @command='EXEC master..xp_cmdshell' + '''MOVE '+ Replace(@FILE,'''','''''') + ' ' +REPLACE(@FILE,'''','') +''''
print @command
EXECUTE sp_ExecuteSQL @command--, N'@lotsOfText nvarchar(max) output ',@lotsoftext output
SELECT @ii=@ii+1
END