Parsing 在带有For/f循环的批处理过程中运行sqlcmd

Parsing 在带有For/f循环的批处理过程中运行sqlcmd,parsing,for-loop,batch-processing,sqlcmd,Parsing,For Loop,Batch Processing,Sqlcmd,我试图在批处理过程中使用For循环多次执行sqlcmd。For循环应该通过txt文件进行解析,其中每行都是数据库中研究的名称。sqlcmd查询应该提取适当的数据,并用研究名称填充csv文件。如果我在内部声明变量,sqlcmd将自行生成一个csv。批处理过程的工作原理是,它通过文本文件进行解析,并为其中的每个研究生成csv,但它不填充文件。这是sqlcmd查询 DECLARE @StudyName nvarchar(255) SET @StudyName='$(StudyName)' DECLA

我试图在批处理过程中使用For循环多次执行sqlcmd。For循环应该通过txt文件进行解析,其中每行都是数据库中研究的名称。sqlcmd查询应该提取适当的数据,并用研究名称填充csv文件。如果我在内部声明变量,sqlcmd将自行生成一个csv。批处理过程的工作原理是,它通过文本文件进行解析,并为其中的每个研究生成csv,但它不填充文件。这是sqlcmd查询

DECLARE @StudyName nvarchar(255)
SET @StudyName='$(StudyName)'

DECLARE @TblTVM TABLE(StudyId int, Animal nvarchar(100), DATE varchar(100), LL float, LWi float, LTVM float)


INSERT INTO @TblTVM (StudyId, Animal, DATE, LL,LWi, LTVM)
    SELECT
        S.StudyId,
        A.PermanentId AS 'Animal',
        (CAST(Datepart(Month, V.PerformDateTime) AS varchar(2))) + '/' + (CAST(Datepart(Day, V.PerformDateTime) AS varchar(2))) + '/' + (CAST(Datepart(Year, V.PerformDateTime) AS varchar(4))) AS 'DATE',
        V.Length AS 'LL',
        V.Width AS 'LWi',
        V.Volume AS 'LTVM'
FROM TblStudy S
    INNER JOIN tblAnimals A ON S.StudyId = A.StudyID
    INNER JOIN TblTumorVolume V ON A.AnimalId = V.AnimalId
    INNER JOIN TblImplants I ON V.ImplantId = I.ImplantID
WHERE
    S.StudyNumber LIKE @StudyName AND
    I.ImplSite LIKE N'Left';


SELECT
    L.Animal,
    L.DATE,
    LL,
    LWi,
    LTVM

FROM @TblTVM L
ORDER BY
2,
1
这是.bat文件

@echo off

set /p dir="What file?"

FOR /f %%X in (%dir%) do (
    SET "StudyName=%%X"
    SQLCMD -d StudyLog_Summary -i C:\Tools\2CSVQuery.sql -o C:\Tools\CSVs\%%X.csv -W -s","
)
在计算我的csv文件是空的(即0行完成)的任何帮助将是伟大的

谢谢, 杰夫