Board logo

标题: [文本处理] [已解决]在线请教老师, bat能否实现关闭已打开的文件 [打印本页]

作者: 7016427    时间: 2015-3-24 19:25     标题: [已解决]在线请教老师, bat能否实现关闭已打开的文件

本帖最后由 7016427 于 2015-5-15 09:53 编辑

请教老师,bat能否实现关闭已打开的"d:\每日文件\文件目录.xls"文件?
作者: CrLf    时间: 2015-3-24 22:38

干进程没问题,但一个进程里不一定只打开了一个 excel 文件
作者: DAIC    时间: 2015-3-24 22:54

文件路径暂时没找到好方法,但是文件名是可以滴:
  1. @echo off
  2. for /f "tokens=2" %%i in ('tasklist /v ^| findstr /c:"文件目录.xls"') do (
  3.     taskkill /f /pid %%i
  4. )
复制代码

作者: tmplinshi    时间: 2015-3-25 01:26

本帖最后由 tmplinshi 于 2015-3-25 01:39 编辑
  1. ' 2>nul & @cscript //nologo -e:vbscript %0 "d:\每日文件\文件目录.xls" & exit/b
  2. CloseExcelWindow( WScript.Arguments(0) )
  3. Function CloseExcelWindow(FileName)
  4. Set xls = GetObject(FileName)
  5. ' 如果只打开了一个 Excel 窗口,xls.Close 执行后还会留下一个空白窗口。
  6. ' 所以,如果只打开了一个 Excel 窗口就直接退出进程,否则关闭。
  7. If xls.Application.WorkBooks.Count = 1 Then
  8. xls.Application.Quit
  9. Else
  10. xls.Close
  11. End If
  12. End Function
复制代码

作者: 7016427    时间: 2015-3-25 07:20

[已解决!]回复 4# tmplinshi
你好!如果能优化一下更好,看着代码较复杂!
作者: 7016427    时间: 2015-3-25 07:21

[未解决!]回复 3# DAIC
执行后,文件仍然存在!
作者: DAIC    时间: 2015-3-25 09:06

回复 6# 7016427


我这里测试可以关掉。你执行这个代码把报错信息发给我看看:
  1. for /f "tokens=2" %%i in ('tasklist /v ^| findstr /c:"文件目录.xls"') do (
  2.     taskkill /f /pid %%i
  3. )
  4. pause
复制代码

作者: 7016427    时间: 2015-3-25 12:57

[测试错误]回复 7# DAIC
@echo off
for /f "tokens=2" %%i in ('tasklist /v ^| findstr /d:"每日文件\文件目录.xls"') do (
    taskkill /f /pid %%i
)
pause
请老师看看怎么改?
作者: DAIC    时间: 2015-3-25 13:20

回复 8# 7016427


    照抄7楼代码,不要做什么修改,那个 /c 不是C盘的意思
作者: 7016427    时间: 2015-3-25 22:14

[请教语句问题]回复 9# DAIC
请问老师,7楼 那个 /c 是什么意思?
作者: DAIC    时间: 2015-3-26 12:52

回复 10# 7016427


打开命令行窗口,执行 findstr /? 可以看到每个参数的详细解释。
也可以参考别人写的教程 http://bbs.bathome.net/thread-14682-1-1.html
作者: 7016427    时间: 2015-5-14 22:06     标题: [已解决] 在线请教老师, bat能否实现关闭已打开的文件

回复 4# tmplinshi




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2