返回列表 发帖
回复 15# winbat
set TotalLine=0
for /f "tokens=2" %%i in ('findstr "导入了" test.log') do (
    set /a TotalLine+=%%i
)
echo 导入总行数:%TotalLine%COPY
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

那就是 start 执行完 oracle imp 入库命令 dmp 数据入库到完成是要一定时间的

可以看看imp的时候是不是有对应的进程,根据进程判断imp是否执行完毕,类似于这个:
http://bbs.bathome.net/thread-33711-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 winbat 于 2015-1-9 21:18 编辑

回复 16# Batcher

Batcher 您测试过了么,我怎么测试了没成功。能贴个完整的代码让我学习学习。我是菜鸟太菜了

TOP

回复 18# winbat


    把你测试的代码和测试的结果发出来我看看
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 19# Batcher
@echo off
for %%i in ("%cd%\*.dmp") do (
echo 正在处理文件 %%i
start imp user/pwd@orcl_192.168.0.1 file=%%i log=%%i.log fromuser=user touser=user buffer=40960 recordlength=6535 commit=n ignore=y feedback=1000
)
for /r %%i in ("%cd%") do (
    copy "*.dmp.log"/a+"%%i"/a "test.log"
    set /a n+=1
echo 合并的文件个数:%n%
pause
)
set TotalLine=0
for /f "tokens=2" %%i in ('findstr "导入了" test.log') do (
    set /a TotalLine+=%%i
)
exitCOPY

TOP

回复 20# winbat


第9行为什么使用中文括号?
第12行的括号是什么目的?
echo 导入总行数:%TotalLine% 为什么被你删掉了?

你直接把16楼的代码放到13楼代码的后面,不要乱改。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 21# Batcher
@echo off
for %%i in ("%cd%\*.dmp") do (
echo 正在处理文件 %%i
start imp user/pwd@orcl_192.168.0.1 file=%%i log=%%i.log fromuser=user touser=user buffer=40960 recordlength=65535 commit=n ignore=y ignore=y feedback=1000
)
for /r %%i in ("%cd%") do (
    copy "*.dmp.log"/a+"%%i"/a "test.log"
    set /a n+=1
)
echo 合并的文件个数:%n%
del %cd%\*dmp.log
pause
set TotalLine=0
for /f "tokens=2" %%i in ('findstr "导入了" test.log') do (
    set /a TotalLine+=%%i
)
echo 导入总行数:%TotalLine%
pauseCOPY
第9行为什么使用中文括号? 确实是中文输入,好意思打的太快输入法没切换。
第12行的括号是什么目的? 编辑器自动添加了 T T
echo 导入总行数:%TotalLine% 为什么被你删掉了?
sorry ,我粗心大意了。测试时一直没成功修改时不小心给删到了,当也没加 pause 也没想到结果回显在屏幕,还以为结果会写到 test.log 里所以一直改不成功,抱歉 @Batcher 是我疏忽了,现在 ok 了

下星期上班在看下能否解决,延迟执行命令问题!非常感谢 @Batcher 周末愉快!

TOP

回复 22# winbat


    我不是已经告诉你了吗,看看进程。17楼你再看看
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 23# Batcher

意思是明白了,添加了个 oracle imp.exe 命令进程判断 tasklist|find /i "imp.exe" 还是没效果,不知道这样是写对么?
@echo off
for %%i in ("%cd%\*.dmp") do (
echo 正在处理文件 %%i
start imp user/pwd@orcl_192.168.0.1 file=%%i log=%%i.log fromuser=user touser=user buffer=40960 recordlength=65535 commit=n ignore=y ignore=y feedback=1000
)
tasklist|find /i "imp.exe"
for /r %%i in ("%cd%") do (
    copy "*.dmp.log"/a+"%%i"/a "test.log"
    set /a n+=1
)
echo 合并的文件个数:%n%
del %cd%\*dmp.log
pause
set TotalLine=0
for /f "tokens=2" %%i in ('findstr "导入了" test.log') do (
    set /a TotalLine+=%%i
)
echo 导入总行数:%TotalLine%>>test.log
pauseCOPY
还是要加个 for 判断呢,搞不定只能指望老大你了。
for /f "skip=1"%%i in ("imp.exe") do if not exist %%i start COPY

TOP

@echo off
for %%i in ("%cd%\*.dmp") do (
echo 正在处理文件 %%i
start imp user/pwd@orcl_192.168.0.1 file=%%i log=%%i.log fromuser=user touser=user buffer=40960 recordlength=65535 commit=n ignore=y ignore=y feedback=1000
)
:loop
ping -n 5 127.1 >nul
echo 正在判断 imp.exe 进程
tasklist | findstr /i "imp.exe" > nul && goto :loop
echo 正在合并日志文件

for /r %%i in ("%cd%") do (
    copy "*.dmp.log"/a+"%%i"/a "test.log"
    set /a n+=1
)
echo 合并的文件个数:%n%
del %cd%\*dmp.log
pause
set TotalLine=0
for /f "tokens=2" %%i in ('findstr "导入了" test.log') do (
    set /a TotalLine+=%%i
)
echo 导入总行数:%TotalLine%>>test.log
pause
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 25# Batcher
@echo off
color 0A
echo            \\\ATA///     %date%
echo           \\ - - //        %time:~0,8%
echo            ( @ @ )
echo     ┏━━━oOOo━━(_)━━oOOo━━━━┓
echo     ╀                                 ╀
echo    A◎      ID: @Batcher ; @winbat     ◎A
echo    A◎      Forum: www.bathome.net     ◎A
echo    A◎     非常感觉 @Batcher 的帮助    ◎A
echo    A◎                                 ◎A
echo     ╁                         Oooo    ╁
echo     ┗━━━━━━━━oooO━━(   )━━┛
echo                       (   )    ) /
echo                        \ (    (_/
echo                         \_)
echo  
echo  
for %%i in ("%cd%\*.dmp") do (
echo 正在处理文件 %%i
start imp user/pwd@orcl_192.168.0.1 file=%%i log=%%i.log fromuser=user touser=user buffer=xxxxx recordlength=xxxxx commit=n ignore=y ignore=y feedback=xxx
)
:loop
ping -n 5 127.1 >nul
echo 正在判断 imp.exe 进程
tasklist | findstr /i "imp.exe" > nul && goto :loop
echo 正在合并日志文件
for /r %%i in ("%cd%") do (
    copy "*.dmp.log"/a+"%%i"/a "数据入库统计.log"
    set /a n+=1
)
echo 合并的文件个数:%n%
del %cd%\*.dmp.log
set TotalLine=0
for /f "tokens=2" %%i in ('findstr "导入了" 数据入库统计.log') do (
    set /a TotalLine+=%%i
)
echo                 %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,8%    数据入库统计:%TotalLine% 枚>>数据入库统计.log
exitCOPY
sorry , 这两天一直在忙,问题解决了 perfect 。可以结帖了,非常感谢 @Batcher 的热心忙助让我少走了很多弯路也学到了很多,这里是个能学到东西的地方。
放上整理过的完整代码,分享给有用的人!
感谢 @Batcher www.bathome.net

TOP

返回列表