2016-11-15 61 views
0

我正在通过应用程序将文件从Windows共享移动到FTP服务器。我只想确保没有其他应用程序试图处理该文件。我尝试使用手柄,但程序无法安装在我的工作笔记本电脑上。是否有一个cmd命令可用于查看某个文件是否通过应用程序或进程被锁定?如何检查文件是否被其他进程或应用程序锁定(windows)

+0

'handle'是什么?没有'cmd'内部或Windows提供的命令可以显示这一点。你看过SysInternalsSuite中有什么? – lit

+0

没有'cmd'内部或Windows提供的命令可以显示这一点。你有没有看过SysInternals Suite中有什么?如果SysInternals不能在你的机器上安装,那是另一个问题。移动文件的“应用程序”应该有自己的错误处理,以确定它是否失败。 – lit

+0

如果其他程序正在写入,则无法移动它。所以不需要测试。查看'openfiles /?'查看打开的文件。注意你必须打开一个特殊的窗口模式,然后在openfiles工作之前重新启动。参见'openfiles/local /?'。 – 2016-11-15 19:33:36

回答

0

尝试先将文件移动到临时目录。如果这没有失败,您可以安全地将文件移动到最终目的地。 有时它是保持打开目标文件的ftpserver或web服务器,这可以防止它被更新(有人正在下载文件)。在这种情况下,重命名旧文件可能会有所帮助。操作重命名因为它打开目录句柄而不是被阻塞的文件句柄

IF EXIST %TMP%\file DEL %TMP%\file 
MOVE \\windows\share\file %TMP%\file 
IF NOT EXIST %TMP%\file (ECHO file is not movable at the moment.&EXIT) 
IF EXIST \\ftp\server\ftproot\file.bak DEL \\ftp\server\ftproot\file.bak 
REN \\ftp\server\ftproot\file \\ftp\server\ftproot\file.bak 
MOVE /Y %TMP%\file \\ftp\server\ftproot\file 
0

我相信你的答案被发现here.通过简单地被发送错误信息拿起回到它是很容易发现哪些进程正在使用的文件或目录。