Przenieś pliki z wielu folderów do katalogu nadrzędnego za pomocą wiersza polecenia

8

Mam wiele plików .rar w wielu folderach, takich jak to:

C:\Docs\Folder1\rarfile1-1.rar
C:\Docs\Folder1\rarfile1-2.rar
C:\Docs\Folder1\rarfile1-3.rar  

C:\Docs\Folder2\rarfile2-1.rar
C:\Docs\Folder2\rarfile2-2.rar
C:\Docs\Folder2\rarfile2-3.rar  

C:\Docs\Folder3\rarfile3-1.rar
C:\Docs\Folder3\rarfile3-2.rar
C:\Docs\Folder3\rarfile3-3.rar  

Chcę przenieść wszystkie pliki .rar do katalogu nadrzędnego „C: \ Docs”. Mam dużo więcej niż 3 foldery, więc zastanawiałem się nad stworzeniem pliku wsadowego lub czegoś takiego. Jakie byłyby polecenia, aby to zrobić?
Dzięki

Nacięcie
źródło
Szukałem podobnego problemu i uznałem tę odpowiedź za przydatną.
lalthomas

Odpowiedzi:

15

Właśnie stworzyłem aplikację wiersza poleceń, która robi to dokładnie (plus pokazuje statystyki) i szukałem, czy ktoś próbował to zrobić, abym mógł ją udostępnić i uratować kogoś przed koniecznością rozgryzienia.

Pisanie było fajne. Wymaga .NET 3.5, działa z wiersza poleceń, wywołuje z parametrem -h lub bez parametru do użycia.

MoveFilesUpFromSubfolders
(kod źródłowy)

Informacje zwrotne plus! :)

Aha, i zrzut ekranu jak to wygląda:

                               

Camilo Martin
źródło
3
+1 Pisanie programu rozwiązującego czyjś problem. To zobowiązanie!
Li-aung Yip,
1
@ Li-aungYip Dziękuję bardzo za komplement! Ponadto z powodu okoliczności nie mam już dysku twardego, na którym kiedyś kodowałem (straciłem to i wiele innych rzeczy), więc cieszę się, że mogę go tu zobaczyć i pobrać ( podziękowania dla Mediafire za przechowywanie go tak długo przy niewielkiej liczbie pobrań i mam szczęście, że nie przechowałem go w Megaupload!). Więc jeśli spojrzysz na to z perspektywy, im więcej dasz, tym więcej otrzymasz :)
Camilo Martin
Świetna robota! +1 i 50 powtórzeń Wiem, że ma to 4,5 roku, ale było to dla mnie bardzo przydatne, ponieważ pobrałem ponad 90 plików, które znalazły się w ponad 90 folderach. Pomogło mi to umieścić wszystkie pliki w folderze nadrzędnym.
Jedyną krytyką, którą mam, jest to, że kiedy próbowałem tego użyć, ciągle pojawiał się błąd dotyczący problemu z folderem i nie podawał przyczyny. Tylko za pomocą polecenia -t udało mi się ustalić, dlaczego wystąpił problem z folderem (ponieważ jego nazwa zawiera ponad 250 znaków). Można to łatwo obejść, podświetlając wszystkie foldery i zmieniając nazwę jednego z nich (wówczas do reszty zostanie dodany numer).
@ edmastermind29 Bardzo się cieszę, że mój stary kod był dla kogoś przydatny. Wierzcie lub nie, archiwum kodu źródłowego zostało zdjęte z mediafire za automatyczne oznaczenie jako naruszenie praw autorskich (co jest dość absurdalne, biorąc pod uwagę, że nie ma wideo lub audio, ale tylko tekst) i nie mam pojęcia, jak to zrobiłem . Jeśli ma to jakikolwiek użytek, w tym momencie napisałbym bash jednoliniową, aby poradzić sobie z takim problemem, coś mv dir/sub/* dir; rmdir dir/subw rodzaju pętli.
Camilo Martin
7

Wypróbuj to:

for /d %f in (docs\*) do (
pushd %f
move .\*.* ..
popd
)
BillP3rd
źródło
Czy możesz to trochę wyjaśnić?
Nick
@Nick: Dla wszystkich folderów w docswprowadź folder. Przenieś wszystkie pliki z bieżącego folderu do folderu nadrzędnego. Wróć do folderu nadrzędnego.
Cześć71,
pushdI popdnie jest to naprawdę konieczne. cddziałałoby dobrze.
Hello71,
Jak wyjaśniono w Hello71. Można to również zrobić za pomocą jednej linii:for /d %f in (docs\\*) do move %f\\*.* docs
BillP3rd
1
NB Ani powyższy oryginał, ani linijka nie będą poprawnie obsługiwać duplikatów nazw plików.
BillP3rd,
5

Odpowiedź na twoje pytanie jest bardzo prosta. To nie jest skrypt, ale się uda.

Zakładałem, że używasz systemu Windows.

  • Umieść się w katalogu C: \ Docs
  • Naciśnij F3 (szukaj)
  • Wyszukaj * .rar
  • Naciśnij Crtl + A
  • Naciśnij Ctrl + X
  • Zamknij okno wyszukiwania i jeszcze raz przejdź do C: \ Dosc w Eksploratorze
  • Wklej przycięte pliki, naciskając CTRL + V.
integratorIT
źródło
+1 za miłe i proste obejście bez żadnych stron trzecich ani skryptów.
Syakur Rahman
+ 1 najlepsza i najszybsza metoda A +++
Najgorszy
3

W tej sprawie działało dla mnie ssanie .

Suction to bezpłatna, przenośna aplikacja, która w mgnieniu oka pomoże uporządkować niechciane foldery.

Zasysanie polega na konsolidacji katalogów macierzystych. Na przykład, jeśli katalog obrazów jest pełen niepotrzebnych folderów, przeciągnij folder do interfejsu Suction, a usunie foldery, pozostawiając tylko pliki. Jest to również przydatne dla osób, które pobierają wiele rzeczy.

Raystafarian
źródło
0

Przykłady kopiowania lub przenoszenia plików z podkatalogów do jednego katalogu

for / f "tokens = *"% a in ('katalog' C: \ Temp \ Epub * .epub "/ s / b ') skopiuj / y"% a "C: \ Temp \ epub.

for / f "tokens = *"% a in ('katalog' C: \ Temp \ Epub * .epub "/ s / b ') do move / y"% a "C: \ Temp \ epub

„tokeny = * służą do przechwytywania ścieżek ze znakami specjalnymi

użytkownik340812
źródło
-1

To powinno działać:

move C:\Docs\*\* C:\Docs
Cześć71
źródło
2
Pojawia się błąd: nazwa pliku, nazwa katalogu lub składnia etykiety woluminu jest nieprawidłowa.
Nick
** nie działał
Nick
Musisz upewnić się, że wstawiłeś `\ ', i że nie ucieka ci Twój edytor tekstu.
Cześć71,
Wydanie tego polecenia z wiersza CMD (w systemie Windows 7) generuje błąd zauważony przez Nicka.
BillP3rd,
To nie zadziała. * nie działa poprawnie dla folderów. Muszę przełamać programy innych firm, takie jak Total Commander.
surfasb