在BCP方法中,我需要从另一个批处理文件动态获取三个值(机器名称,用户名,密码)。
第一个文件如下:
MACHINE_NAME=IN-L20054
DB_UserName=sa
DB_Password=sa
pause
第二个文件如下:
bcp.exe ExportDB.dbo.AddressCountry OUT "C:\Temp\AddressCountry.bcp" -S "MACHINE_NAME" -U "DB_UserName" -P "DB_Password" -n -q
bcp.exe ExportDB.dbo.CI OUT "C:\Temp\CI.bcp" -S "MACHINE_NAME" -U "DB_UserName" -P "DB_Password" -n -q
pause
这背后的需要是,如果我们在另一机器上运行这些文件,那么每个人唯一要做的就是更新并先运行 < / strong>文件,其中包含计算机名称,用户名和密码
我尝试了solution,但没有成功。
有人可以在这里帮我吗。 ?
答案 0 :(得分:2)
可以通过参数,环境变量或文本文件将字符串从一个批处理文件传递到另一个批处理文件。
Main.bat:
call "%~dp0Export.bat" "IN-L20054" "User" "Password"
call "%~dp0Export.bat" "Other Machine" "Other User" "Other Password"
Export.bat:
bcp.exe ExportDB.dbo.AddressCountry OUT "C:\Temp\AddressCountry.bcp" -S "%~1" -U "%~2" -P "%~3" -n -q
bcp.exe ExportDB.dbo.CI OUT "C:\Temp\CI.bcp" -S "%~1" -U "%~2" -P "%~3" -n -q
Main.bat:
set "MACHINE_NAME=IN-L20054"
set "DB_UserName=User"
set "DB_Password=Password"
call "%~dp0Export.bat"
set "MACHINE_NAME=Other Machine"
set "DB_UserName=Other User"
set "DB_Password=Other Password"
call "%~dp0Export.bat"
Export.bat:
bcp.exe ExportDB.dbo.AddressCountry OUT "C:\Temp\AddressCountry.bcp" -S "%MACHINE_NAME%" -U "%DB_UserName%" -P "%DB_Password%" -n -q
bcp.exe ExportDB.dbo.CI OUT "C:\Temp\CI.bcp" -S "%MACHINE_NAME%" -U "%DB_UserName%" -P "%DB_Password%" -n -q
在此示例中,竖线|
用作定界符,如果不使用脱字符号^
进行转义,则将其解释为重定向运算符。当然可以使用其他任何字符作为分隔符,例如;
或,
或制表符。
(
echo IN-L20054^|User^|Password
echo Other Machine^|Other User^|Other Password
) >"%TEMP%\Export.tmp"
call "%~dp0Export.bat"
del "%TEMP%\Export.tmp"
Export.bat:
for /F "usebackq tokens=1-3 delims=|" %%I in ("%TEMP%\Export.tmp") do (
bcp.exe ExportDB.dbo.AddressCountry OUT "C:\Temp\AddressCountry.bcp" -S "%%~I" -U "%%~J" -P "%%~K" -n -q
bcp.exe ExportDB.dbo.CI OUT "C:\Temp\CI.bcp" -S "%%~I" -U "%%~J" -P "%%~K" -n -q
)
for %%# in ("IN-L20054|User|Password" "Other Machine|Other User|Other Password") do (
for /F "tokens=1-3 delims=|" %%I in (%%#) do (
bcp.exe ExportDB.dbo.AddressCountry OUT "C:\Temp\AddressCountry.bcp" -S "%%~I" -U "%%~J" -P "%%~K" -n -q
bcp.exe ExportDB.dbo.CI OUT "C:\Temp\CI.bcp" -S "%%~I" -U "%%~J" -P "%%~K" -n
)
)
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
call /?
del /?
echo /?
for /?
set /?
另请参阅有关Using command redirection operators的Microsoft文章。