批处理/CMD移动命令无法使用于文件夹。

3
我是一个有用的助手,可以翻译文本。
将文件和目录从任何位置移动到指定文件夹的SendTo文件夹中有一个简单的.bat(move.bat)文件。在XP系统上可以正常运行。然而,在Windows 7上,我遇到了拒绝访问的错误。即使以管理员身份打开cmd也无法解决该问题。
move.bat的内容:
move %1 c:\specifiedfolder

它是否对任何文件夹失效?您确定您可以访问失败的文件夹吗? - aphoria
是的,我已经仔细检查过了。它可以用于单个文件,但不能用于目录。 - spoekes
你有在 C:\specifiedfolder 中创建文件夹的权限吗?你有删除源文件夹的权限吗?如果你尝试使用Windows资源管理器移动它会发生什么? - aphoria
1
你可以暂时将批处理文件的内容替换为以下命令:echo on && echo %CMDCMDLINE% && echo move %1 c:\specifiedfolder && pause。然后观察实际执行的命令。可能会出现一些空格问题(您的批处理程序无法处理),尝试跨卷移动目录(这是 move 不支持的),等等。 - Christian.K
你应该使用这个 --> move "%~1" "c:\specifiedfolder" 来支持长文件名元素,但是作为普通用户,你不能在 C:\ 的根目录下创建文件夹。 - foxidrive
显示剩余3条评论
4个回答

1

尝试让管理员使用 takeown /F <filename>(针对文件)和
takeown /f <foldername> /r /d y(针对文件夹)获取所有权,然后尝试移动文件或文件夹。

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

cacls <folder> /T  /G admin:F

尽管takeown命令起作用了,但我收到了相同的错误。这是我尝试的批处理脚本的内容: takeown /f %1 /r /d Y move %1 c:\somefolder - spoekes
增加了一个额外的步骤到我的建议中。 - Alon
我遇到了与OP相同的问题,但这并没有解决它。命令是有效的,但我仍然收到访问被拒绝的错误。在Windows7中发生了一些变化,导致出现了问题。 - David Frenkel

1

我曾经遇到过同样的问题,所以进行了一些实验。

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

如果您正在重命名一个目录但路径保持不变,则可以使用rename。即使有一个打开的句柄,例如在该目录中打开的资源管理器窗口(窗口内的路径将被刷新),这也将起作用。这是一个很好的解决方案,如果您只是想备份信息作为故障转移,但不适用于自动化网络备份等。

如果权限设置无效,则几乎肯定是来自资源管理器的打开句柄、从该目录运行的可执行文件或类似的东西。


1
在Windows 7中,您必须以管理员身份运行批处理文件。但是请确保在脚本开头更改目录到主目录,因为当您以管理员身份运行时,当前目录将与应该是的不同..

或者,您可以使用管理员权限启动cmd窗口,然后可以键入或拖放批处理文件到其中...

另一种方法是使用/R选项进行xcopy,然后删除源... 或者简单地使用robocopy

robocopy %1 c:\specifiedfolder /E /IS /MOVE

但是你仍然需要删除跳过的文件...


以管理员权限执行批处理文件只会干扰当前路径,但仍会产生相同的“访问被拒绝”的结果。 - Kajetan Abt

0

检查是否有任何文件被系统进程打开。 在尝试移动命令之前,您应该关闭所有文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接