批处理文件 bcp 命令
batch file bcp command
坚持使用运行 bcp 命令的简单批处理文件。
我需要这个批处理文件循环遍历包含 tables 名称的 txt 文件。
这是我目前的情况
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%
set year=%date:~-4%
echo year=%year%
set dt=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hour%%min%%secs%
set filename=%1
bcp TABLE.dbo.%1 OUT C:\temp\%filename%_%dt%.dat -n -T
我喜欢 %1 来自 input.txt 可能有 50 table 个名称的文件。
感谢您的帮助
我会使用 for
命令来遍历文本文件。请参阅 for /?
寻求帮助。
假设文件名为 input.txt
,每行有一个 table 名称。你用 myscript.cmd input.txt
:
来称呼它
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%
set year=%date:~-4%
echo year=%year%
set dt=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hour%%min%%secs%
for /f %%i in (%1) do (
bcp TABLE.dbo.%%i OUT C:\temp\%%i_%dt%.dat -n -T
)
我不会使用 locale/user 设置相关的 date/time 变量,但是
wmic os get LocalDateTime
仅遗漏日期和时间之间的下划线的命令。
@Echo off
For /f "delims=." %%A in ('wmic os get LocalDateTime^|find "."') do Set DT=%%A
for /f "delims=" %%F in (%1) do (
bcp TABLE.dbo.%%F OUT "C:\temp\%%F_%DT:~0,8%_%DT:~8,6%.dat" -n -T
)
坚持使用运行 bcp 命令的简单批处理文件。 我需要这个批处理文件循环遍历包含 tables 名称的 txt 文件。
这是我目前的情况
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%
set year=%date:~-4%
echo year=%year%
set dt=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hour%%min%%secs%
set filename=%1
bcp TABLE.dbo.%1 OUT C:\temp\%filename%_%dt%.dat -n -T
我喜欢 %1 来自 input.txt 可能有 50 table 个名称的文件。
感谢您的帮助
我会使用 for
命令来遍历文本文件。请参阅 for /?
寻求帮助。
假设文件名为 input.txt
,每行有一个 table 名称。你用 myscript.cmd input.txt
:
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%
set year=%date:~-4%
echo year=%year%
set dt=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hour%%min%%secs%
for /f %%i in (%1) do (
bcp TABLE.dbo.%%i OUT C:\temp\%%i_%dt%.dat -n -T
)
我不会使用 locale/user 设置相关的 date/time 变量,但是
wmic os get LocalDateTime
仅遗漏日期和时间之间的下划线的命令。
@Echo off
For /f "delims=." %%A in ('wmic os get LocalDateTime^|find "."') do Set DT=%%A
for /f "delims=" %%F in (%1) do (
bcp TABLE.dbo.%%F OUT "C:\temp\%%F_%DT:~0,8%_%DT:~8,6%.dat" -n -T
)