批处理文件中sqlcmd的用户指定脚本和输出文件夹

时间:2018-06-12 15:45:35

标签: batch-file for-loop sqlcmd

目前,下面的For / Do循环遍历与批处理文件本身在相同文件夹中的所有SQL文件,并将CSV输出到用户指定的文件夹(%OUTPUTFOLDER%实际上是在批处理文件的早期创建的,作为%SCRIPTFOLDER%的子文件夹,由用户指定):

FOR /F "tokens=*" %%S IN (
    'DIR /B "%SCRIPTFOLDER%\*.sql" '
) DO (
    echo Reading scripts from: %SCRIPTFOLDER%\*.sql
    echo Script: %%~fS
    echo Output: %OUTPUTFOLDER%\%%~nS.csv
    sqlcmd -b -S %INSTANCE% -d %DATABASE% -i "%%~fS" -s "|" -o "%OUTPUTFOLDER%\%%~nS.csv" -W
    IF ERRORLEVEL 1 GOTO errorhandling
    ECHO %%~nS.csv successfully created
)

对于可视化示例,如果我有文件夹结构

C:\Extract\extract.bat
C:\Extract\Scripts\
C:\Extract\Output\

变量%SCRIPTFOLDER%由用户设置,并且是您猜测它保存脚本的文件夹。但批处理文件也必须在该文件夹中。我需要更改它,以便脚本不必与批处理文件位于同一文件夹中。即用户可以指定%SCRIPTFOLDER%%OUTPUTFOLDER%

由于echo Script: %%fS的输出,我猜这是我需要改变的东西 - 可能是FOR行中的内容,但我不知道究竟是怎么做的。

0 个答案:

没有答案
相关问题