2012-07-30 18 views
7

Próbowałem utworzyć skrypt wsadowy, który kopiuje wszystkie pliki * .tif znajdujące się w D: \ images (losowo nazwane podfoldery tutaj) do d: \ all.Windows kopiuje pliki z podfolderów do jednego folderu.

xcopy D:\Downloads\*.TIF D:\temp\ /s 

działa, ale kopiuje ze wszystkimi drzewami folderów. Próbowałem użyć innych kluczy, ale to nie działa. Dzięki za pomoc!

Odpowiedz

26

FOR jest twoim przyjacielem. Przeczytaj HELP FOR na opcji /R i podstawienia zmiennej %~nx; a następnie spróbuj tego bardzo prostego kodu.

pushd d:\downloads 
    for /r %%a in (*.tif) do (
    echo COPY "%%a" "d:\temp\%%~nxa" 
    ) 
    popd 

dokładnie obejrzeć wyniki, a następnie usunąć polecenie ECHO.

trzeba będzie dopracować kod, aby poradzić sobie z błędami, powielanie nazwisk, nazw przypadków brzegowych, z zastrzeżonych znaków, warunków wyścigowych, wydarzeń kosmicznych ...

+0

Dzięki, to jest to, czego potrzebuję! –

+1

Oddziel wzory plików przecinkami! Utwórz plik .bat i zamień 'd: \ downloads' na'% 1' i 'd: \ temp \ %% ~ nxa' na'% 2'. Następnie będziesz miał polecenie ponownego użycia, umieściłem mój Dropbox \ bin w PATH, aby móc go używać na wszystkich moich komputerach. Świetny skrypt nietoperzy, dzięki! – caiohamamura

0

Można również użyć darmowego XXCOPY. Działa jak XCOPY, ale gdy użyjesz parametru/SG, spłaszcza on podkatalogi. Zobacz, jak z niego korzystać here.

2
pushd D:\Source 
    for /r %%a in (*.?*) do (
     MOVE "%%a" "D:\Destination folder\%%~nxa" 
    ) 
popd 
+0

spowoduje to pobranie wszystkich plików z podfolderu i przeniesienie ich do folderu docelowego, a także zmianę ruchu do skopiowania. – Stur

3

Wyszukiwanie plików za pomocą Eksploratora plików systemu Windows, np. * .gif, mam pliki w oknie wyszukiwania, użyłem Edit => Zaznacz wszystko, skopiuj, a następnie wklej do wybranego folderu. To skopiowało wszystkie pliki gif we wszystkich podkatalogach do pojedynczego folderu. W przypadku dużej liczby plików czasami zawiesza się/nie odpowiada, ale poza tym działa poprawnie.

+0

To jest całkiem łatwy sposób na zrobienie tego! :) – user3640967