jer*_*liu 78 windows file-io winapi
我得到了一些由恶意软件创建的文件夹,其名称以点C:\a.\或C:\b.\等等结尾.
我找到了一个可以用命令删除这个文件夹的解决方案,rd /q /s "C:\a.\"但如果我调用win API RemoveDirectory,它会返回ERROR_FILE_NOT_FOUND.
我只是想知道如何写一个函数来删除这样的目录,谢谢
我在我自己的Windows XP SP3系统上进行测试
创建一个文件夹C:\>mkdir a..\\\,我无法双击访问此文件夹.我可以用命令删除 rd /q /s "C:\a.\"
rd /q /s命令调用的Windows系统API是什么?
Ski*_*ick 131
rd /s "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder."
Run Code Online (Sandbox Code Playgroud)
Cod*_*ray 57
解决方案:
当您调用RemoveDirectory时,请确保在路径前面加上字符串" \\?\".
说明:
它与点有关.根据MSDN,在某些情况下,您可能无法删除NTFS卷上的文件或文件夹,特别是当文件名在Win32名称空间中无效时(这就是您无法使用该文件打开文件的原因) Windows资源管理器中的常规方法).
如果文件名包含无效名称(例如,文件名具有尾随空格或尾随句点或文件名仅由空格组成),则可能无法删除文件.要解决此问题,请使用使用适当内部语法删除文件的工具.您可以使用"\\?\"语法和一些工具来处理这些文件,例如:del"\\?\ c:\ path_to_file_that包含尾随space.txt"此问题的原因类似于原因4.但是,如果使用典型的Win32语法打开其名称中具有尾随空格或尾随句点的文件,则在打开实际文件之前将删除尾随空格或句点.因此,如果您在名为"AFile.txt"和"AFile.txt"的同一文件夹中有两个文件(请注意文件名后面的空格),如果您尝试使用标准Win32调用打开第二个文件,则打开首先是文件.同样,如果您的文件名称只是""(空格字符)并且您尝试使用标准Win32调用打开它,则会打开文件的父文件夹.在这种情况下,如果您尝试更改这些文件的安全设置,您可能无法执行此操作,或者您可能会意外更改不同文件上的设置.
(来源:http://support.microsoft.com/?kbid = 320081)
Ami*_*ein 40
我把它发布在SU上,我决定在这里发布.它是实现这一目标的最简单,最快速,最简单的方法.我现在嘲笑它有多简单.



我自己安装了WinRaR,所以我决定在其中演示解决方法.
使用7zip也可以实现此解决方法.
我应该提到的另一件事是,因为似乎问题是由使用Windows资源管理器和任何其他文件浏览器(如winrar文件浏览器本身,ftp资源管理器等)引起的,将正常处理此文件.
您可以尝试使用任何文件浏览器,只需删除这些文件,而不是为了存档它们!干杯!
小智 7
当你看到名字是"a.",但实际名称是"a .."
试试这个:
rd /q /s "C:\a..\"
Run Code Online (Sandbox Code Playgroud)
您可以尝试通过以下代码浏览该文件夹:
for /f "tokens=3 delims=<>" %%a in ('dir /ad /x "C:\*" ^| findstr " a\.\.$"') do (
for /f "tokens=1" %%b in ("%%a") do start "" "%%~fb"
)
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您需要保留数据,您还可以使用\\?\重命名文件夹的技巧。
ren "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder." "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder"
Run Code Online (Sandbox Code Playgroud)
如果您需要了解文件夹内的内容或者数据是否重要,那么这是一个理想的解决方案。
这适用于命令提示符和 PowerShell。
| 归档时间: |
|
| 查看次数: |
53054 次 |
| 最近记录: |