kopiowanie całej zawartości folderu do innego folderu przy użyciu pliku wsadowego?


134

Mam folder w C:\Folder1

Chcę skopiować całą zawartość Folder1do innej lokalizacji,D:\Folder2

Jak to zrobić za pomocą pliku wsadowego?

Odpowiedzi:


165

xcopy.exejest tutaj rozwiązaniem. Jest wbudowany w system Windows.

xcopy /s c:\Folder1 d:\Folder2

Więcej opcji można znaleźć pod adresem http://www.computerhope.com/xcopyhlp.htm


3
Witaj Hussainie, próbowałem użyć polecenia xcopy / sc: \ Folder1 d: \ Folder2 w pliku wsadowym, ale dla mnie nie działa. czy możesz mnie bardziej poprowadzić.
SCM,

Cześć, może nie masz tego xcopy na swoim komputerze. Możesz jednak pobrać plik wsadowy stąd Brothersoft.com/xcopy-177904.html
eHussain

4
Jeśli chcesz skopiować również puste podkatalogi, powinieneś użyć flag / s / e.
Ameba Spugnosa

Czy / e nie zawiera automatycznie / s?
mghicks

15
xcopyjest przestarzały i wywołuje błąd „Za mało pamięci”, gdy nazwa pliku jest dłuższa niż 254 znaki. Użyj robocopyzamiast tego: robocopy C:\Folder1 D:\Folder2 /COPYALL /E en.wikipedia.org/wiki/Robocopy
Marco Demaio

40

Jeśli masz Robocopy,

robocopy C:\Folder1 D:\Folder2 /COPYALL /E

Inaczej,

xcopy /e /v C:\Folder1 D:\Folder2

1
Jeśli to skopiuje zawartość Folder1, co zrobisz, jeśli chcesz skopiować sam folder?
Kyle Delaney

2
@KyleDelaney dołącz nazwę folderu źródłowego w miejscu docelowym, np. „Xcopy / e / v C: \ Folder1 D: \ Folder2 \ Folder1 \”
mghicks

1
Zauważ, że RoboCopy używa \ jako znaku ucieczki (CMD tego nie robi) , jeśli spróbujesz przekazać w cudzysłowie ścieżkę ze spacją i końcowym ukośnikiem, tak "C:\My Folder\"jakbyś mógł otrzymać nieprzyjemną niespodziankę. Polecam bardzo uważne przeczytanie tej strony SS64. Aby zapoznać się z pełną treścią „co to jest znak ucieczki w CMD”, zobacz „ Ucieczka podwójnych cudzysłowów w skrypcie wsadowym” .
jrh

21

jeśli chcesz usunąć wiadomość, która mówi, czy miejscem docelowym jest plik lub folder, po prostu dodaj ukośnik:

xcopy /s c:\Folder1 d:\Folder2\


16

Widzę wiele odpowiedzi sugerujących użycie xcopy. Ale to jest niepotrzebne. Ponieważ pytanie wyraźnie wspomina, że ​​autor chce, aby TREŚĆ W FOLDERZE, a nie sam folder był kopiowany w tym przypadku, możemy -:

copy "C:\Folder1" *.*  "D:\Folder2"

To wszystko xcopy może zostać użyte, jeśli istnieje podkatalog wC:\Folder1


1
To nie działa, jeśli folder, do którego kopiujesz, jeszcze nie istnieje (wydaje mi się), więc możesz chcieć dodaćmd D:\Folder2
Mark Deven

2
Moje copypolecenie ( wiersz polecenia systemu Windows 10) informuje mnie, że składnia jest nieprawidłowa. Następująca składnia byłaby poprawna:copy "C:\Folder1\*.*" "D:\Folder2"
j00hi

5

RoboCopy nie działał dla mnie i jest tutaj kilka dobrych rozwiązań, ale żadne nie wyjaśniło przełączników XCopy i ich działania. Potrzebujesz również cudzysłowów, jeśli ścieżka zawiera spacje.

xcopy / i / e "C: \ temp \ folder 1" "C: \ temp \ folder 2"

Oto dokumentacja firmy Microsoft:

Dokumentacja XCopy MS

/s: Specifies to include subdirectories. Excludes empty subdirectories
/e: Copies all subdirectories, even if they are empty
/i: specifies the destination is a folder (Otherwise it prompts you)

2
@echo off
::Ask
echo Your Source Path:
set INPUT1=
set /P INPUT1=Type input: %=%

echo Your Destination Path:
set INPUT2=
set /P INPUT2=Type input: %=%

xcopy %INPUT1% %INPUT2% /y /s

2

Na moim komputerze xcopy i robocopy również potrzebują ścieżki do nich, np. C: \ Windows \ System32 \ xcopy.exe

Dlatego używam po prostu „kopiuj”: kopiuj / y .... \ Folder1 \ Plik.txt .... \ Folder2 \


2
@echo off
xcopy /s C:\yourfile C:\anotherfile\

Tak to się robi! Proste, prawda?


2

Oto rozwiązanie z robocopy który kopiuje zawartość Folder1 do Folder2 Idąc zagłębieniu wszystkie podkatalogi i automatycznie zostanie zastąpione pliki o tej samej nazwie:

robocopy C:\Folder1 C:\Folder2 /COPYALL /E /IS /IT

Tutaj:

/COPYALLkopiuje wszystkie informacje o plikach
/Ekopiuje podkatalogi, w tym puste katalogi,
/ISzawiera te same pliki, w
/ITtym zmodyfikowane pliki o tej samej nazwie

Więcej parametrów można znaleźć w oficjalnej dokumentacji: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy

Uwaga : może być konieczne uruchomienie polecenia jako administrator ze względu na argument /COPYALL. Jeśli nie możesz: po prostu się go pozbądź.


-1

FYI ... jeśli używasz TortoiseSVN i chcesz utworzyć prosty plik wsadowy do xcopy (lub kopii lustrzanej katalogu) całych repozytoriów w „bezpiecznej” lokalizacji okresowo, to jest to określony kod, którego możesz chcieć użyć. Kopiuje ukryte katalogi / pliki, zachowuje atrybuty tylko do odczytu i wszystkie podkatalogi, a co najważniejsze, nie monituje o wprowadzenie danych. Tylko upewnij się, że poprawnie przypisałeś folder1 (bezpieczne repozytorium) i folder2 (repozytorium użyteczne).

@echo off
echo "Setting variables..."
set folder1="Z:\Path\To\Backup\Repo\Directory"
set folder2="\\Path\To\Usable\Repo\Directory"
echo "Removing sandbox version..."
IF EXIST %folder1% (
    rmdir %folder1% /s /q
)
echo "Copying official repository into backup location..."
xcopy /e /i /v /h /k %folder2% %folder1%

I to wszystko ludzie!

Dodawaj do zaplanowanych zadań i nigdy nie oglądaj się za siebie.


-2
@echo off
:: variables
echo Backing up file
set /P source=Enter source folder:
set /P destination=Enter Destination folder:
set xcopy=xcopy /S/E/V/Q/F/H/I/N
%xcopy% %source% %destination%
echo files will be copy press enter to proceed
pause

2
Wyjaśnienie twojego kodu przyniesie korzyści nie tylko osobie zadającej to pytanie, ale także przyszłym ludziom, którzy natkną się na to w poszukiwaniu rozwiązania tego samego problemu.
Josh Burgess

3
Masz kilka flag, które są bezpośrednio sprzeczne z innymi flagami. /Skopiuje katalogi i podkatalogi z wyjątkiem pustych, podczas gdy /Ekopiowane są katalogi i podkatalogi, w tym puste. /Qnie wyświetla nazw plików podczas kopiowania, podczas gdy /Fwyświetla pełne nazwy plików źródłowych i docelowych podczas kopiowania.
SomethingDark

-2

Napisałem plik .bat, aby skopiować i wkleić plik do folderu tymczasowego i spakować go i przenieść do punktu montowania smb, mam nadzieję, że to pomoże,

    @echo off
    if not exist "C:\Temp Backup\" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
    if not exist "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP"
    if not exist "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    xcopy /s/e/q "C:\Source" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
   Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    "C:\Program Files (x86)\WinRAR\WinRAR.exe" a  "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP\ZIP_Backup_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%.rar" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\TELIUM"
    "C:\Program Files (x86)\WinRAR\WinRAR.exe" a  "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP\ZIP_Backup_Log_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%.rar" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    NET USE \\IP\IPC$ /u:IP\username password
    ROBOCOPY "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP"  "\\IP\Backup Folder" /z /MIR /unilog+:"C:\backup_log_%date:~-4,4%%date:~-10,2%%date:~-7,2%.log"
    NET USE \\172.20.10.103\IPC$ /D
    RMDIR /S /Q "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.