Отправка выходного файла sqlcmd в каталог, который является переменной - PullRequest
0 голосов
/ 07 июня 2018

В настоящее время работает следующий код в пакетном файле: он запускает все сценарии SQL в %SCRIPTFOLDER% и отправляет выходные данные каждого сценария в 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
)

Что яМне бы хотелось, чтобы пользователь мог указать, куда отправляются генерируемые файлы CSV, используя переменную% OUTPUTFOLDER%.

Я попытался разместить %OUTPUTFOLDER%, который представляет собой полный путь, диск и папки (например,D: \ some folder \ output) в различных позициях в пределах %%~dpnS.csv.В частности,

%%~dp%OUTPUTFOLDER%nS.csv

и

%%~dpn%OUTPUTFOLDER%S.csv

, но они не сработали, и я (вероятно, для вас) крайне неудачен в синтаксисе пакетного файла!

Я понимаю, что dp - это диск и путь, а S - это имя файла, но я не уверен, как интегрировать это с переменной, которая является путем.

1 Ответ

0 голосов
/ 07 июня 2018

Итерационная переменная %% S, модификатор ~dpn заставляет вычислить путь и имя диска.

В этом случае вы хотите сами указать диск и путь, так что в зависимости от того, будет ли %OUTPUTFOLDER%имеет обратную косую черту

-o "%OUTPUTFOLDER%%%~nS"

или не используется:

-o "%OUTPUTFOLDER%\%%~nS"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...