Board logo

标题: [文件操作] 批处理BAT如何判断文件是否为打开状态? [打印本页]

作者: linlianboy    时间: 2014-4-12 13:28     标题: 批处理BAT如何判断文件是否为打开状态?

问题:

在远程目录\\10.0.0.1\test\ 内有多个CSV文件(file1.csv和file2.csv),其中file2.csv文件目前状态为其他网络用户打开编辑中,file1.csv文件为空闲状态(可以重命名),请问下各位如何判断该目录内有哪些文件为空闲状态
作者: linlianboy    时间: 2014-4-14 15:40

无人知??
作者: PowerShell    时间: 2014-4-14 18:13

如何判断文件是否为  只读状态?

其中file2.csv文件目前状态为其他网络用户打开编辑中,你再打开file2.csv的话将有只读文件的提示。
当你看到只读提示,就知道是只读状态了。

上面两句话,可以用vbs,powershell,来实现:
new 一个excel对象,打开file2.csv,判断属性是啥,输出并返回即可。
作者: CrLf    时间: 2014-4-14 21:44

本帖最后由 CrLf 于 2014-4-14 22:02 编辑

如果楼主说的是判断被占用,多简单个事儿,还要用 excel ?思路真开阔
  1. @echo off
  2. for %%a in (\\10.0.0.1\test\*.csv) do ren "%%a" "%%~nxa"||echo %%a 被锁定
  3. pause
复制代码
  1. @echo off
  2. for %%a in (\\10.0.0.1\test\*.csv) do break >>"%%~nxa"||echo %%a 被锁定
复制代码
至于如何判断被某个程序打开了但并没有占用文件句柄,本机可能可以用 openfiles(只是可能)或 tasklist 或 wmic,别的机子打开的一般没办法直接判断——除非你有远程权限
作者: qzwqzw    时间: 2014-4-14 22:35

可以在发布文件共享的主机上运行 net file 查看被锁定的共享文件及目录
作者: CrLf    时间: 2014-4-14 23:37

回复 5# qzwqzw


    测试没看到效果,这是以什么为判断依据的呢?
作者: PowerShell    时间: 2014-4-30 09:30

Block-SmbShareAccess
Unblock-SmbShareAccess
刚刚看到这两条powershell命令,或许这俩命令加参数可以解决你的问题,
Unblock-SmbShareAccess
http://technet.microsoft.com/lib ... 3-92bf-86b5cf6d0a75(v=wps.630).aspx
谁愿意研究一下?




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