Сам не нашёл (( Не знаю, как-то можно заставить проводник показывать папки всегда вверху списка, независимо от сортировки? (а то подбешивает, когда папки получаются внизу - привычка из win9x, да и winrar так делает)
Сам не нашёл (( Не знаю, как-то можно заставить проводник показывать папки всегда вверху списка, независимо от сортировки? (а то подбешивает, когда папки получаются внизу - привычка из win9x, да и winrar так делает)
Или вот. Как-то можно удалять каталоги из командного файла с подстановочными знаками? (под win9x была deltree *.tmp - и все дела). А rmdir подстановочные знаки не принимает, хотя есть ещё команда for. Но строка "for %f in (*.tmp) do rmdir /s /q %f " выдаёт только "непредвиденное появление f". Что не так?
Можно через VBScript пойти
Это нужно сохранить в простом текстовом файле с расширением *.vbs. Код проверил - работает, удаляет каталоги даже если они и не пустые. Так что осторожнееКод:'Путь к обрабатываемому каталогу dim DirPath DirPath = "D:\Temp" 'Обработка всех файлов в каталоге Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder(DirPath) for each FolderName in Folder.SubFolders FolderName.Delete next
Факт - работает. Но ежели нужно по выборке, скажем "*DIR.TMP" ?
Полагаю, если на vbs, то как-то извлекать имя каталога, потом отрезать часть имени, сравнивать с образцом и по условию удалять. И всё это для того, что раньше обходилось одной строкой deltree - нда уж ((
Ну да. Но это не так трудно
Оставить надо, естественно, только один из вариантов сравнения - по вкусу.Код:'Путь к обрабатываемому каталогу dim DirPath DirPath = "D:\Temp" 'Обработка всех файлов в каталоге Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder(DirPath) pattern = ".tmp" 'Удаление всех подкаталогов for each FolderName in Folder.SubFolders 'Без учета регистра, в конце названия (расширение) If ucase(Right(FolderName.Name, len(pattern))) = ucase(pattern) then 'FolderName.Delete End If 'С учетом регистра, в конце названия (расширение) If Right(FolderName.Name, len(pattern)) = pattern then 'FolderName.Delete End If 'Без учета регистра, в любом месте названия If InStr(ucase(FolderName.Name), ucase(pattern)) then FolderName.Delete End If 'С учетом регистра, в любом месте названия If InStr(FolderName.Name, pattern) then FolderName.Delete End If next
Kay'lus (02.12.2008)
Тьфу, заработало - нужно внимательнее читать справку. Оказывается, для for нужно писать %переменная, когда в командной строке и %%переменная, когда в командном файле. О как! И for /D %%f in (%1) do rmdir /s /q %%f теперь пашет как надо, уря!
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)