У меня есть папки, созданные вредоносным ПО, чьи имена заканчиваются точкой, например 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.\"
какие системные API Windows rd /q /s
вызывают эту команду?
Ответы:
Вот решение этой проблемы :
rd /s "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder."
источник
rd
.CMD.exe
в режиме администратора, если он не работает в командной строке без повышенныхРешение. При вызове RemoveDirectory убедитесь, что путь к пути указан строкой "
\\?\
".Пояснение: Это все связано с точкой. Согласно MSDN, есть определенные случаи, когда вы не сможете удалить файл или папку на томе NTFS, особенно когда имя файла недопустимо в пространстве имен Win32 (вот почему вы не можете открыть файл с помощью обычные методы в проводнике Windows).
(Источник: http://support.microsoft.com/?kbid=320081 )
источник
rd "\\?\C:\Users\ahmed\Desktop\buggy."
rd
в pwsh есть псевдоним,remove-item
который не поддерживает `\\? \`.{IncrementalNumber}.
), и я был очень смущен тем, почему мои сценарии обработки данных не работают. Теперь это имеет смысл, но похоже, что поведение настолько неожиданное, что может иметь разветвления безопасности из-за того, что приложения неправильно обрабатывают имена файлов, заканчивающиеся пробелом или точкой.Я разместил это на SU и решил разместить это и здесь. Это самый простой, самый быстрый и легкий способ добиться этого. Теперь я смеюсь над тем, насколько это просто.
У меня сам был установлен WinRaR, поэтому я решил продемонстрировать в нем обходной путь.
Этот обходной путь также возможен при использовании 7zip.
Еще одна вещь, которую я должен упомянуть, заключается в том, что, как кажется, проблема вызвана использованием проводника Windows, и любой другой файловый браузер (например, сам файловый браузер winrar, ftp-проводники и т. Д.) Будет обрабатывать эти файлы как обычно.
Вы можете попробовать использовать любой файловый браузер и просто удалить эти файлы, не беспокоясь об их архивировании! Ура!
источник
Когда вы видите имя «а.», Но на самом деле имя «а ..»
Попробуй это:
rd /q /s "C:\a..\"
И вы можете попробовать исследовать папку с помощью этого кода:
for /f "tokens=3 delims=<>" %%a in ('dir /ad /x "C:\*" ^| findstr " a\.\.$"') do ( for /f "tokens=1" %%b in ("%%a") do start "" "%%~fb" )
источник
Если у вас установлен git (вы можете получить его отсюда ), то это очень просто:
rm -rf Foldername./
источник
rm: cannot remove ‘.bin’: Directory not empty
-rf
часть должна позаботиться о содержимом папки.Я использовал " WinRar " простой процессор RAR, ZIP. Вы можете использовать любой редактор имен файлов. Просто откройте каталог, в котором находится ваш файл, в WinRar и выберите переименовать, щелкнув правой кнопкой мыши файл / папку, которые вы хотите переименовать, и введите новое имя.
источник
Попробуйте использовать программу разблокировки для удаления файлов и папок, которые вы не можете удалить обычным способом.
источник
Используйте команду bash rm из Ubuntu в Windows 10
источник
rm: cannot remove ‘.bin’: Directory not empty
если вы хотите сохранить параметры файлов, также есть в bash.
вам потребуется пакет Windows Subsystem for Linux (у меня установлена Ubuntu)
хранить файлы. откройте командную строку и перейдите к тому месту, где находится файл или папка.
теперь введите "
bash
",это откроет bash в командной строке. теперь введите
mv '[folder or file you want to move]' '[new name (can include path)]'
(есть больше для mv, поэтому, если вы хотите прочитать все его параметры, используйте 'man mv', это откроет его страницу руководства (затем используйте q, чтобы вернуться в bash))команда mv является сокращением для перемещения, но ее имеет второстепенную функцию переименования вещей.
также в bash используйте «одинарные кавычки», а не обычные «двойные кавычки», поскольку bash ожидает «одинарных кавычек».
вот пример. Предположим, что ваша папка с именем "
data 1.
" расположена вc:\users
(так что полный путь к папке с ошибкой:c:\users\data 1.
1. откройте командную строку любым способом
2. введите
cd c:\users
3. теперь введите,
bash
это загружает bash в папку, в которой вы раньше находились4. наконец, введите
mv 'data 1.' 'data 1'
5. Теперь папка доступна, и вы можете удалить ее.
источник