Mam folder (nazwijmy to A) z dużą ilością podfolderów B, C, D, E, które następnie mają podfoldery B1, B2, B3, ... C1, C2, C3 ...
Jak mogę użyć cmd przenieść wszystkie pliki ze wszystkich podfolderów do folderu głównego „A”?
Mam folder (nazwijmy to A) z dużą ilością podfolderów B, C, D, E, które następnie mają podfoldery B1, B2, B3, ... C1, C2, C3 ...
Jak mogę użyć cmd przenieść wszystkie pliki ze wszystkich podfolderów do folderu głównego „A”?
Odpowiedzi:
Mój oryginalny post nie uwzględnił rozszerzenia pliku w poleceniu przenoszenia.
%~nizwraca tylko nazwę basename, musisz użyć,%~nxiaby uzyskać zarówno nazwę pliku, jak i rozszerzenie! Mam nadzieję, że nie zmieniłeś nazw plików na moim koncie! (
Z wiersza polecenia:
cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"
Jeśli chcesz później wyczyścić puste foldery:
for /d %i in (*) do @rd /s /q "%i"
Teraz, jeśli masz konflikty nazw plików, jesteś sam. Możesz dodać /yparametr do movepolecenia (przed "%i"), aby wymusić nadpisanie. Jeśli chcesz czegoś innego, potrzebujesz innego programu, który może automatycznie zmienić nazwę wszystkiego dla Ciebie.
Ponadto, jeśli chcesz używać tego w pliku wsadowym, zmienić wszystko %do %%.
FOR /r- miło!
Utwórz folder i skopiuj do niego wszystkie inne foldery, a następnie kliknij prawym przyciskiem myszy ten folder i wybierz Wyszukaj . W polu wyszukiwania wpisz *.*.
Spowoduje to wyświetlenie listy wszystkich plików i folderów. Wybierz wszystkie pliki, które chcesz w katalogu głównym i wytnij je. Przejdź do katalogu głównego i wklej tam wszystkie pliki.
Zainstaluj Cygwin (lub inne środowisko Unix dla Windows) i uruchom następujące polecenie:
cd A
find . -type f -exec mv {} . \;
mvi findwariantów może być konieczne użycie find . -type f -exec mv -t . {} \;zamiast niej.
mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 ci touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/cccdo przygotowania.
find . -type f -exec mv {} . ;I wydawało się, że działa dobrze.