我想删除一个由另一个进程锁定的文件,从命令行(Windows 7)。
请注意,我知道这可能会造成各种各样的破坏,包括丢失所有数据并让Alan Turing在他的坟墓中旋转。在我的特殊情况下,我知道我在做什么,或者至少我愿意承担责任。
由于我已经安装了Cygwin,我的尝试是使用rm -rf,但是如果文件被锁定,这仍然不起作用(Permission Denied)。
我已经搜索了这个问题并找到了对免费工具(handler.exe和LockHunter)的建议,我愿意尝试一下。我只是想知道是否有更好的方法来做到这一点,特别是Cygwin中的某些工具,或者可能是Windows本身,是否允许我这样做。
有什么建议吗?
答案 0 :(得分:1)
您可以安装解锁器并从命令行使用它。 Unlocker是免费软件。 问候 Giova
答案 1 :(得分:1)
Sender ID
可以包含在此脚本中以简化使用(指定部分文件名而不是PID)。
Settings - Cloud Messaging
演示(如果此脚本保存为handle
):
#!/bin/bash
if [ $# -eq 0 ]; then
cat >&2 <<EOF
Arguments to narrow handles expected.
Usage: $(basename "$0") HANDLE_ARG...
HANDLE_ARGs are passed to the handle command by Sysinternals
(https://technet.microsoft.com/sysinternals/handle) which must be in the path.
Example $(basename "$0") c:\\dir\\xy
EOF
handle -h || true
exit 4
fi
o=$(handle "$@" | perl -nle 'print "$1\t$2\t$3" if m{\bpid:\s*(\d+)\s+type:\s+\S+\s+([[:xdigit:]]+):\s(.*)}') || exit
echo "$o"
echo "Closing $(wc -l <<< "$o") handles..."
while read -r p h; do
handle -c "$h" -p "$p" -y
done <<< "$o"
当需要通配时,应该在脚本之外完成:
closefilehandle
答案 2 :(得分:0)
在删除文件之前,您可以从命令行使用handle
实用程序。见https://stackoverflow.com/a/10672497/1786034