[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

请教老师,bat能否实现关闭已打开的"d:\每日文件\文件目录.xls"文件?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

干进程没问题,但一个进程里不一定只打开了一个 excel 文件

TOP

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

TOP

本帖最后由 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
复制代码
1

评分人数

    • CrLf: 好办法!技术 + 1

TOP

[已解决!]回复 4# tmplinshi
你好!如果能优化一下更好,看着代码较复杂!

TOP

[未解决!]回复 3# DAIC
执行后,文件仍然存在!

TOP

回复 6# 7016427


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

评分人数

TOP

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

TOP

回复 8# 7016427


    照抄7楼代码,不要做什么修改,那个 /c 不是C盘的意思

TOP

[请教语句问题]回复 9# DAIC
请问老师,7楼 那个 /c 是什么意思?

TOP

回复 10# 7016427


打开命令行窗口,执行 findstr /? 可以看到每个参数的详细解释。
也可以参考别人写的教程 http://bbs.bathome.net/thread-14682-1-1.html

TOP

[已解决] 在线请教老师, bat能否实现关闭已打开的文件

回复 4# tmplinshi

TOP

返回列表