Показать полную графическую версию : Как передать переменные из файла?
omriyana
05-02-2016, 16:30
прошу помощи в следующем. Есть команда, которая отрабатывает для единичного значения:
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.
«for /f» используйте для разбора файла.
omriyana
05-02-2016, 17:11
спасибо, помогло :)
а не подскажете как сделать, чтобы название файла на выходе ( /hrxmlfile:C:\tmp\hrxmlfile_name.xml) вглядело так hrxmlfile_name.xml, т.е. чтобы часть переменной @contoso.com в название файла не прописывалась? а то сейчас у меня получается так hrxmlfile_name@contoso.com.xml ?
предположим что переменная используемая в for - %%i и в ней находится "name@contoso.com" в таком случае нам нужно от нее отрезать 12 символов сзади чтобы получилось просто "name"
set name=%%i
echo %name:~,-12%
omriyana
05-02-2016, 17:46
что здесь не так (у меня создается файл без названия .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)
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
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
а не подскажете как сделать, чтобы название файла на выходе ( /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
Код:
for /f "delims=@" %%j in (%%i) do echo %%j »
а как при этом указать что %%i это переменная из файла?
а как при этом указать что %%i это переменная из файла? »
Покажите Ваш:
спасибо, помогло »
код.
omriyana
06-02-2016, 15:39
вот так получается файл с именем 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?
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
Iska, большое спасибо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC