Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 将sqlcmd输出文件发送到作为变量的目录_Batch File_Sqlcmd - Fatal编程技术网

Batch file 将sqlcmd输出文件发送到作为变量的目录

Batch file 将sqlcmd输出文件发送到作为变量的目录,batch-file,sqlcmd,Batch File,Sqlcmd,当前,批处理文件中的以下代码可以工作:它运行%SCRIPTFOLDER%中的所有SQL脚本,并将每个脚本的输出发送到与脚本位于同一文件夹中的CSV FOR /F "tokens=*" %%S IN ( 'DIR /B "%SCRIPTFOLDER%\*.sql" ' ) DO ( sqlcmd -b -S %INSTANCE% -d %DATABASE% -i "%%~fS" -s "|" -o "%%~dpnS.csv" -W IF ERRORLEVEL 1 GOTO

当前,批处理文件中的以下代码可以工作:它运行
%SCRIPTFOLDER%
中的所有SQL脚本,并将每个脚本的输出发送到与脚本位于同一文件夹中的CSV

FOR /F "tokens=*" %%S IN (
    'DIR /B "%SCRIPTFOLDER%\*.sql" '
) DO (
    sqlcmd -b -S %INSTANCE% -d %DATABASE% -i "%%~fS" -s "|" -o "%%~dpnS.csv" -W
    IF ERRORLEVEL 1 GOTO errorhandling
    ECHO %%~nS.csv successfully created
)
我想做的是允许用户使用变量%OUTPUTFOLDER%指定将生成的CSV发送到的位置

我尝试将
%OUTPUTFOLDER%
放置在
%~dpnS.csv
中的不同位置,这是一个完整路径、驱动器和文件夹(例如D:\some folder\output)。具体来说,

%%~dp%OUTPUTFOLDER%nS.csv

但它们不起作用,我(可能对你来说很明显)在批处理文件语法方面非常笨拙


我知道
dp
是驱动器和路径,
S
是文件名,但我不知道如何将其与作为路径的变量集成。

迭代变量是%%S,修饰符
~dpn
强制计算驱动器路径和名称

在这种情况下,您需要自己指定驱动器和路径,以便根据
%OUTPUTFOLDER%
是否有一个尾随反斜杠

-o“%OUTPUTFOLDER%%%~nS”

或不使用:


-o“%OUTPUTFOLDER%\%%%nS”

迭代变量是%%S,修饰符
~dpn
强制计算驱动器路径和名称

在这种情况下,您需要自己指定驱动器和路径,以便根据
%OUTPUTFOLDER%
是否有一个尾随反斜杠

-o“%OUTPUTFOLDER%%%~nS”

或不使用:


代码> -O“%OutPosivs%\%%ns”

当您发布这个问题时,我正回答自己的问题。我做了很多尝试和错误,但最终在你的答案中找到了解决方案。加了斜杠的那个就是我需要的。谢谢如果有疑问,在两个之间添加<代码> \代码>,因为双反斜杠不干扰,但是缺少一个……当你发布这个问题时,我正在回答我自己的问题。我做了很多尝试和错误,但最终在你的答案中找到了解决方案。加了斜杠的那个就是我需要的。谢谢如果有疑问,请在两者之间添加
\
,因为双反斜杠不会干扰,但缺少一个会干扰。。。
%%~dpn%OUTPUTFOLDER%S.csv