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