Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как передать переменные из файла? (http://forum.oszone.net/showthread.php?t=311219)

omriyana 05-02-2016 16:30 2602891

Как передать переменные из файла?
 
прошу помощи в следующем. Есть команда, которая отрабатывает для единичного значения:
dbimpexp.exe /user:name@contoso.com /sqlserver:servername.contoco.com\instanse /hrxmlfile:C:\tmp\hrxmlfile_name.xml
Мне надо чтоб из файла со списком адресов пользователей (вида name@contoso.com) подставлялись по очереди эти адреса в вышеуказанную команду dbimpexp.exe....
И, чтоб имя пользователя прописывалось в название файла на выходе /hrxmlfile:C:\tmp\hrxmlfile_name.xml.

Iska 05-02-2016 16:57 2602896

«for /f» используйте для разбора файла.

omriyana 05-02-2016 17:11 2602903

спасибо, помогло :)
а не подскажете как сделать, чтобы название файла на выходе ( /hrxmlfile:C:\tmp\hrxmlfile_name.xml) вглядело так hrxmlfile_name.xml, т.е. чтобы часть переменной @contoso.com в название файла не прописывалась? а то сейчас у меня получается так hrxmlfile_name@contoso.com.xml ?

Elven 05-02-2016 17:31 2602911

предположим что переменная используемая в for - %%i и в ней находится "name@contoso.com" в таком случае нам нужно от нее отрезать 12 символов сзади чтобы получилось просто "name"
Код:

set name=%%i
echo %name:~,-12%


omriyana 05-02-2016 17:46 2602917

что здесь не так (у меня создается файл без названия .xml, хотя в переменной больше 12 знаков):

set name=%%i
for /f %%i In (text.txt) do (dbimpexp.exe /user:%%i /sqlserver:servername.contoco.com/instanse /hrxmlfile:C:\%name:~,-12%.xml)

Elven 05-02-2016 18:02 2602922

Код:

SETLOCAL ENABLEDELAYEDEXPANSION
set name=%%i
for /f %%i In (text.txt) do (dbimpexp.exe /user:%%i /sqlserver:servername.contoco.com/instanse /hrxmlfile:C:\!name:~,-12!.xml)


omriyana 05-02-2016 18:14 2602924

Цитата:

Цитата Elven
SETLOCAL ENABLEDELAYEDEXPANSION
set name=%%i
for /f %%i In (text.txt) do (dbimpexp.exe /user:%%i /sqlserver:servername.contoco.com/instanse /hrxmlfile:C:\!name:~,-12!.xml) »

на выходе получается файл без названия .xml

Iska 05-02-2016 18:42 2602931

Цитата:

Цитата omriyana
а не подскажете как сделать, чтобы название файла на выходе ( /hrxmlfile:C:\tmp\hrxmlfile_name.xml) вглядело так hrxmlfile_name.xml, т.е. чтобы часть переменной @contoso.com в название файла не прописывалась? »

Например, разбивать вложенным «for /f» полученную переменную по символу «@»:
Код:

for /f "delims=@" %%j in (%%i) do echo %%j
где «%%i» — переменная разбора текстового файла (работоспособность кода не проверялась, иллюстрирую только общую идею).

omriyana 05-02-2016 18:52 2602937

Цитата:

Цитата Iska
Код:
for /f "delims=@" %%j in (%%i) do echo %%j »

а как при этом указать что %%i это переменная из файла?

Iska 06-02-2016 03:18 2603017

Цитата:

Цитата omriyana
а как при этом указать что %%i это переменная из файла? »

Покажите Ваш:
Цитата:

Цитата omriyana
спасибо, помогло »

код.

omriyana 06-02-2016 15:39 2603088

вот так получается файл с именем name@contoso.com.xml:
for /f %%i In (text.txt) do (dbimpexp.exe /user:%%i /sqlserver:servername.contoco.com/instanse /hrxmlfile:C:\%%i.xml)

а так получается файл без имени .xml :
set name=%%i
for /f %%i In (text.txt) do (dbimpexp.exe /user:%%i /sqlserver:servername.contoco.com/instanse /hrxmlfile:C:\%name:~,-12%.xml)

rкак сделать чтобы на выходе получился файл name.xml?

Iska 08-02-2016 05:25 2603570

omriyana, примерно так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=Source.txt

if exist "%sSourceFile%" (
        for /f "usebackq delims=" %%i in ("%sSourceFile%") do (
                for /f "usebackq delims=@" %%j in ('%%~i') do set sName=%%~j
                "dbimpexp.exe" /user:%%i /sqlserver:servername.contoco.com\instanse /hrxmlfile:C:\!sName!.xml
        )
) else (
        echo Can't find source file [%sSourceFile%].
        exit /b 1
)

endlocal
exit /b 0


omriyana 08-02-2016 10:37 2603628

Iska, большое спасибо!


Время: 22:03.

Время: 22:03.
© OSzone.net 2001-