Mam folder w C:\Folder1
Chcę skopiować całą zawartość Folder1
do innej lokalizacji,D:\Folder2
Jak to zrobić za pomocą pliku wsadowego?
Odpowiedzi:
xcopy.exe
jest 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
xcopy
jest przestarzały i wywołuje błąd „Za mało pamięci”, gdy nazwa pliku jest dłuższa niż 254 znaki. Użyj robocopy
zamiast tego: robocopy C:\Folder1 D:\Folder2 /COPYALL /E
en.wikipedia.org/wiki/Robocopy
Jeśli masz Robocopy,
robocopy C:\Folder1 D:\Folder2 /COPYALL /E
Inaczej,
xcopy /e /v C:\Folder1 D:\Folder2
"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” .
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
md D:\Folder2
copy
polecenie ( 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"
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:
/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)
@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
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 \
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:
/COPYALL
kopiuje wszystkie informacje o plikach
/E
kopiuje podkatalogi, w tym puste katalogi,
/IS
zawiera te same pliki, w
/IT
tym 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ź.
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.
@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
/S
kopiuje katalogi i podkatalogi z wyjątkiem pustych, podczas gdy /E
kopiowane są katalogi i podkatalogi, w tym puste. /Q
nie wyświetla nazw plików podczas kopiowania, podczas gdy /F
wyświetla pełne nazwy plików źródłowych i docelowych podczas kopiowania.
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%"