找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28180|回复: 6

[文件操作] 批处理BAT如何判断文件是否为打开状态?

[复制链接]
发表于 2014-4-12 13:28:49 | 显示全部楼层 |阅读模式
问题:

在远程目录\\10.0.0.1\test\ 内有多个CSV文件(file1.csv和file2.csv),其中file2.csv文件目前状态为其他网络用户打开编辑中,file1.csv文件为空闲状态(可以重命名),请问下各位如何判断该目录内有哪些文件为空闲状态
 楼主| 发表于 2014-4-14 15:40:50 | 显示全部楼层
无人知??
发表于 2014-4-14 18:13:55 | 显示全部楼层
如何判断文件是否为  只读状态?

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

上面两句话,可以用vbs,powershell,来实现:
new 一个excel对象,打开file2.csv,判断属性是啥,输出并返回即可。
发表于 2014-4-14 21:44:00 | 显示全部楼层
本帖最后由 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,别的机子打开的一般没办法直接判断——除非你有远程权限
发表于 2014-4-14 22:35:42 | 显示全部楼层
可以在发布文件共享的主机上运行 net file 查看被锁定的共享文件及目录
发表于 2014-4-14 23:37:16 | 显示全部楼层
回复 5# qzwqzw


    测试没看到效果,这是以什么为判断依据的呢?
发表于 2014-4-30 09:30:24 | 显示全部楼层
Block-SmbShareAccess
Unblock-SmbShareAccess
刚刚看到这两条powershell命令,或许这俩命令加参数可以解决你的问题,
Unblock-SmbShareAccess
http://technet.microsoft.com/lib ... 3-92bf-86b5cf6d0a75(v=wps.630).aspx
谁愿意研究一下?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 03:25 , Processed in 0.031365 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表