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

[文件操作] 批处理如何判断一个文件已经被打开?

如何判断一个文件已经被打开。
需要在bat文件中调用外部程序来打开一个文件。
如果这个文件已经被打开,则直接退出;
否则,用外部程序打开这个文件。
---
现在的做法是:
在第一次打开这个文件之前,在当前目录创建一个临时文件
如果在后面再运行这个bat,则检查有没有这个临时文件
如果有,则退出;
否则继续执行,调用外部程序,
并让cmd等待外部程序结束,然后删除这个临时文件。

这么做的问题是:
如果我终止了直接终止了cmd,而不等待外部
程序结束,这个临时文件就不能被删除

--
等待指点



看得有些晕……现在的人措辞……
Still with wax

TOP

悬乎 ~   ······

TOP

看不懂..................

TOP

说了一大盆话,比不上贴个代码。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

你可以设置文件的属性,将已经修改过的文件设置属性为"只读"或者"隐藏",这样可以通过文件的属性来判断...

TOP

@echo off
call .\123.xls
::打开当前目录的123.xls
exit

TOP

原帖由 Lumiere 于 2009-9-25 16:32 发表
看得有些晕……现在的人措辞……


您是哪个时代的?
呵呵。
版主提示用代码,下面就是代码:
----
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

@set TodayFileName="%date%.txt"
@if exist %TodayFileName%  @goto FileExist
@echo %TodayFileName% > %TodayFileName%

:FileExist
@if exist %TodayFileName%.opened goto ExitPoint
@echo "opened" > %TodayFileName%.opened
@notepad %TodayFileName%
@del %TodayFileName%.opened

:ExitPoint
exit

----
其中
%TodayFileName%.opened
就是用来判断
%TodayFileName%
有没有已经被打开的临时文件。
----
如此这样的话,在关闭notepad后,%TodayFileName%.opened会被删除
但如果我在任务管理器中,把cmd这个进程关掉(或者直接关机),这个临时文件将不会被删除。
有没有办法可以规避这些例外?

TOP

返回列表