Windows 7 批处理/CMD移动不适用于文件夹

Windows 7 批处理/CMD移动不适用于文件夹,windows-7,batch-file,cmd,move,Windows 7,Batch File,Cmd,Move,我在SendTo文件夹中有一个简单的.bat(move.bat)文件,它使用上下文菜单将文件和目录从任何位置移动到指定的文件夹。这在XP上有效。然而,在Windows7中,我遇到了一个拒绝访问错误。 它甚至不能与作为admin(runas)打开的cmd一起工作 move.bat的内容: move %1 c:\specifiedfolder 尝试让管理员通过takeown/F(文件)和 takeown/f/r/d y(用于文件夹),然后尝试移动文件或文件夹 取得所有权后,使用cacls实用程序将

我在SendTo文件夹中有一个简单的.bat(move.bat)文件,它使用上下文菜单将文件和目录从任何位置移动到指定的文件夹。这在XP上有效。然而,在Windows7中,我遇到了一个拒绝访问错误。 它甚至不能与作为admin(runas)打开的cmd一起工作

move.bat的内容:

move %1 c:\specifiedfolder

尝试让管理员通过
takeown/F
(文件)和
takeown/f/r/d y
(用于文件夹),然后尝试移动文件或文件夹

取得所有权后,使用cacls实用程序将管理文件权限设置为完全控制 :

cacls/T/G管理员:F

我也有同样的问题,所以做了一些实验

从Windows 7开始,任何打开的Windows目录句柄都会导致访问被拒绝。这包括在该目录中打开的资源管理器,以及通过网络使用该目录的用户

如果要重命名目录,但保持路径不变,则可以使用“重命名”。即使在该目录中有一个打开的句柄(如资源管理器窗口)打开,这也会起作用(窗口中的路径将被刷新) 这是一个很好的解决方案,如果您只是尝试将信息作为故障保护备份,而不是任何可能用于自动网络备份等的内容


如果权限设置不起作用,那么几乎可以肯定它是资源管理器中打开的句柄,是从该目录运行的可执行文件或类似的东西。

在Windows 7中,您必须以管理员身份运行批处理。但是,请确保在脚本开始时将dir更改为homedir,因为当前dir将不同于您作为管理员运行时的应有状态。

或者,您可以启动一个具有管理员权限的cmd窗口,然后您可以在其中键入或拖放批处理文件。。。

另一种方法是使用/R选项xcopy,然后删除源。。。或者干脆用机器人技术


但是您仍然需要删除跳过的文件…

检查系统进程是否打开了您的任何文件。
您应该在尝试执行move命令之前关闭所有文件

尽管takeown命令有效,但我还是遇到了相同的错误。这是我尝试的批处理脚本的内容:takeown/f%1/r/d Y move%1 c:\somefolder在我的建议中添加了一个附加步骤我遇到了与OP相同的问题,但这并没有解决它。命令正常,但我仍然被拒绝访问。Windows7中的某些内容已更改,导致出现问题。是否有任何文件夹的更改失败?是否确实有权访问失败的文件夹?是,任何文件夹都会失败。我在测试文件夹中为每个人设置了完全权限,但它也不起作用。它在Windows 7上对我有效。你确定你有
C:\specifiedfolder
的写权限吗?是的,我仔细检查过了。它适用于单个文件,但不适用于目录。您可以使用以下
echo on&&echo%cmdline%&&echo move%1临时替换批处理文件的内容c:\specifiedfolder&&pause
。然后查看实际执行的命令。空间(批处理无法处理)、目录试图跨卷移动(移动
不支持)等可能存在一些问题。使用管理员权限执行批处理文件只会影响当前路径,但仍会产生相同的“拒绝访问”结果。
cacls <folder> /T  /G admin:F
robocopy %1 c:\specifiedfolder /E /IS /MOVE