These 2 lines are the problem,
SET @SQLCmd=(SELECT CommandText from TestDB.dbo.CommandExportData)
SET @FilePathCmd=(SELECT FilePath from TestDB.dbo.CommandExportData)
The error message is telling you that your subquery is returning more than one row. Since more than one row is returned you can't store them into a variable.
You could add TOP 1, for example, to your select statements.
Assuming there is only 1 row in CommandExportData, you could also do:
SELECT @SQLCmd = CommandText, @FilePathCmd = FilePath
FROM CommandExportData