Командная строка Windows найти определенное имя папки в подпапках

2

Скажем, у меня есть дерево папок, например:

C:\Users\Test\My Documents
C:\Users\Test2
C:\Users\Test3\My Documents

Какую команду можно запустить для поиска C:\Users чтобы проверить, какие подпапки имеют My Documents папка?

Так что для вышеупомянутого это вернулось бы с:

C:\Users\Test\My Documents
C:\Users\Test3\My Documents

Но нет

C:\Users\Test2

Кроме того, если я хочу сценарий переименования любых подпапок, которые будут найдены My Documents и переименуйте их просто DocumentsКак я мог достичь этого?

Guest23408290
источник
не было бы dir /b "My Documents" Работа? Если нет, вы можете разобрать его dir /B | findstr /R /C:"My\sDocuments"... Я думаю, это сработает, у меня нет установленной Windows. Переименовать использовать ren,
Alex
Таким образом, в этом случае вы хотите переименовать «Тест» в «Документы» или «Мои документы» в «Документы»?
tumchaaditya
Может быть, эта тема полезна для вас: stackoverflow.com/questions/9271107/...
bummi
@tumchaaditya Я хотел переименовать мои документы в документы.
Guest23408290

Ответы:

6
DIR /AD /B "My Documents" /S

для перечисления папок

bummi
источник
Я буду откладывать до bummi, я забыл переключатель / D;)
Jason H
1
@bummi Спасибо! Это перечисляет именно то, что я хотел.
Guest23408290
@Karan Фильтрует результаты только по каталогам, исключая файлы.
jpmc26
-1

Вот vbscript, который также переименует папки для вас:

Root = INPUTBOX("Please enter the root folder (all subfolders will be renamed)" & vbcrlf & "e.g. C:\TEST")
IF Root="" THEN Canceled

FindStr = INPUTBOX("Please enter the string that you want to find")
IF FindStr = "" THEN Canceled

ReplaceStr = INPUTBOX("Please enter the string that you want to replace it with")
IF ReplaceStr = "" THEN Canceled

SET objFSO= CREATEOBJECT("Scripting.FileSystemObject")

EnumFolders Root

SUB EnumFolders(BYVAL Folder)
    SET objFolder = objFSO.GetFolder(Folder)
    SET colSubfolders = objFolder.Subfolders

    FOR EACH objSubfolder in colSubfolders
        NewFolderName = (REPLACE(objSubfolder.name, findstr, replacestr))
            IF NewFolderName <> objSubFolder.Name THEN
                objSubFolder.Name = NewFolderName
            END IF
        enumfolders objSubfolder.path
    NEXT

END SUB

SUB Canceled
    wscript.echo "Script Canceled"
    wscript.quit
END SUB

Источник: http://www.wisesoft.co.uk/scripts/vbscript_recursive_folder_rename.aspx

PS: я не проверял это. Пожалуйста, сначала протестируйте с пустой структурой каталогов.

tumchaaditya
источник
это не совсем то, что он спрашивает в вопросе
Saksham Goyal