Wydaje się to dość proste i może po prostu przeoczyłem odpowiednią flagę , ale jak w jednym poleceniu skopiowałbym plik z jednego katalogu do drugiego i zmieniłem jego nazwę w katalogu docelowym? Oto moje polecenie:
if exist "bin\development\whee.config.example"
if not exist "TestConnectionExternal\bin\Debug\whee.config"
xcopy "bin\development\whee.config.example"
"TestConnectionExternal\bin\Debug\whee.config"
Za każdym razem monituje mnie o:
Czy TestConnectionExternal \ bin \ Debug \ whee.config określa nazwę pliku lub nazwę katalogu docelowego (F = plik, D = katalog)?
Chcę ukryć ten monit; odpowiedź brzmi zawsze F
.
command-line
command-prompt
xcopy
Sarah Vessels
źródło
źródło
cp
b ** t kopiowania plików / katalogów!Odpowiedzi:
Nie używaj
xcopy
,copy
zamiast tego użyj , nie ma tego problemu.xcopy
jest zwykle używany podczas wykonywania rekurencyjnych kopii wielu plików / folderów lub gdy potrzebujesz funkcji weryfikacji / monitowania, które oferuje. W przypadku kopii pojedynczych plikówcopy
polecenie działa dobrze.źródło
copy
nie skopiuje pliku, jeśli cała struktura katalogu dla miejsca docelowego jeszcze nie istnieje.xcopy
automatycznie utworzy wszystkie potrzebne katalogi.xcopy
a nie tylkocopy
.używam
obejść to.
źródło
echo d | xcopy srcdirectory destdirectory /S
echo d | xcopy ...
dla mnie. Jesteś genialnyInną opcją jest użycie docelowego symbolu wieloznacznego. Zauważ, że działa to tylko wtedy, gdy nazwy plików źródłowych i docelowych będą takie same, więc chociaż nie rozwiązuje to konkretnego przykładu OP, pomyślałem, że warto się nim podzielić.
Na przykład:
utworzy kopię pliku „whee.config.example” w katalogu docelowym bez pytania o plik lub katalog.
Aktualizacja : Jak wspomniano @chapluck:
Możesz zmienić
"* "
na"[newFileName].*"
. Nadal trwa rozszerzenie pliku, ale umożliwia zmianę nazwy. Lub bardziej hacky:"[newFileName].[newExt]*"
zmienić rozszerzenieźródło
W XCOPY jest jakaś nieudokumentowana funkcja. możesz użyć:
xcopy "bin \ development \ whee.config.example" "c: \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"
właśnie to przetestowałem. :-)
źródło
whee.config.example
utworzenie folderu docelowego, ponieważwhee.config*
pasujewhee.config.example
.b.txtxt
, a następnie uruchomiłem poleceniexcopy a.txt b.txt* /F /Y
i plika.txt
został skopiowanyb.txt
zgodnie z oczekiwaniami. Ponadto podczas używania/F /Y
przełączników rzeczywista kopia jest wyświetlana na ekranie dokładnie zgodnie z oczekiwaniami.Po prostu przejdź do http://technet.microsoft.com/en-us/library/bb491035.aspx
Oto GŁÓWNA PROBLEM: „Jeśli miejsce docelowe nie zawiera istniejącego katalogu i nie kończy się odwrotnym ukośnikiem (), pojawia się następujący komunikat: ...
Czy miejsce docelowe określa nazwę pliku lub nazwę katalogu docelowego (F = plik, D = katalog)?
Możesz ukryć ten komunikat, używając opcji wiersza polecenia / i, co powoduje, że xcopy przyjmuje, że miejscem docelowym jest katalog, jeśli źródłem jest więcej niż jeden plik lub katalog.
Zajęło mi to trochę czasu, ale wystarczy RTFM.
źródło
Istnieje więc prosta poprawka. To wprawdzie niezręczne, ale działa. xcopy nie wyświetli monitu o sprawdzenie, czy miejscem docelowym jest katalog lub plik, JEŻELI nowy plik (nazwa pliku) już istnieje. Jeśli poprzedzisz polecenie xcopy prostym echem nowej nazwy pliku, zastąpi on pusty plik. Przykład
źródło
To jest odpowiedź Bills.
Żeby być naprawdę jasne dla innych.
Jeśli kopiujesz JEDEN plik z jednego miejsca do drugiego ORAZ chcesz utworzyć pełną strukturę katalogów, użyj następującego polecenia:
Tak, umieść ukośnik odwrotny na końcu nazwy pliku i NIE zapyta Cię, czy jest to plik czy katalog. Ponieważ w źródle znajduje się JEDEN plik, zakłada się, że jest to plik.
źródło
dir "C:\Target Data\\Images\2013\08\12"
09/25/2015 10:48 AM <DIR> 85e4a707-2672-481b-92fb-67ecff20c96b.jpg
xcopy src dest /I
REM This assumes dest is a folder and will create it, if it doesnt exists
źródło
Miałem podobny problem i zarówno robocopy, jak i xcopy nie pomogły, ponieważ chciałem ukryć komentarze i użyć innej docelowej nazwy pliku. znalazłem
działa zgodnie z moimi wymaganiami.
źródło
Powrót do pierwotnego pytania:
można to zrobić za pomocą dwóch poleceń, np .:
Po prostu dodając „\ ..” do ścieżki pliku docelowego, tworzony jest katalog docelowy, jeśli jeszcze nie istnieje. W tym przypadku
który jest katalogiem nadrzędnym nieistniejącego katalogu
Przynajmniej dla WIN7 mkdir nie dba o to, czy katalog
naprawdę istnieje.
źródło
XCOPY z * na końcu celu, aby skopiować pliki, niezależnie od tego, czy istnieją w miejscu docelowym XCOPY z \ na końcu celu, aby skopiować foldery i zawartość, czy istnieją, czy nie
Alternatywnie
RoboForm SOURCE DEST FILE dla plików RoboForm SOURCE DEST FILE dla folderów
źródło
Sugeruję
robocopy
zamiastcopy
lubxcopy
. Używany jako polecenie lub w GUI na klientach lub serwerach. Tolerancja na przerwy w sieci i możesz zignorować atrybuty pliku podczas kopiowania kopii według atrybutów pliku. Aha, i obsługuje maszyny wielordzeniowe, więc pliki są kopiowane znacznie szybciej „równolegle” ze sobą zamiast sekwencyjnie.robocopy
można znaleźć na MS TechNet.źródło
Właściwe postępowanie, jeśli chcesz skopiować tylko plik i zmienić jego nazwę w miejscu docelowym, to:
I będzie dobrze
źródło
Do kopiowania dużych plików dobrym wyborem jest xopy z przełącznikiem / J. W takim przypadku po prostu potokuj F dla pliku lub D dla katalogu. Możesz także zapisać zadania w tablicy do wykorzystania w przyszłości. Na przykład:
Dzięki Chand z drobnymi modyfikacjami: https://stackoverflow.com/users/3705330/chand
źródło
Do kopiowania plików używaj kopiowania zamiast xcopy.
np. skopiuj „bin \ development \ whee.config.example” „TestConnectionExternal \ bin \ Debug \ whee.config”
źródło
copy /Y source destination
aby przekazać potwierdzenie nadpisania.Ponieważ tak naprawdę nie zmieniasz nazwy pliku, możesz wyjąć nazwę pliku z miejsca docelowego i nie będzie żadnych pytań.
To podejście działa dobrze, gdy istnieje gwarancja, że katalog docelowy istnieje i gdy źródłem może być równie plik lub katalog.
źródło
Debug
katalog prawdopodobnie istnieje.Obejdź, użyj ReName ... i nadaj mu nazwę Cryptic Name, a następnie zmień nazwę na prawidłową nazwę
DO:
Płyta CD „C: \ Users \ Public \ Documents \ My Web Sites \ AngelFire ~ Zoe \”
XCopy / D / I / V / Y "C: \ Users \ Public \ Documents \ My Web Sites \ HostGator ~ ZoeBeans \ cop.htm"
Ren „cop.htm” „christ-our-passover.htm”
źródło
xcopy pozwoli ci skopiować pojedynczy plik do określonego folderu, po prostu nie pozwoli ci zdefiniować nazwy docelowej. Jeśli potrzebujesz nazwy docelowej, po prostu zmień jej nazwę przed skopiowaniem.
ren „bin \ development \ whee.config.example” whee.config
xcopy / R / Y "bin \ development \ whee.config" "TestConnectionExternal \ bin \ Debug \"
źródło
ren "bin\development\whee.config" whee.config.example
Umieść gwiazdkę (*) na końcu ścieżki docelowej, aby pominąć spór D i F.
Przykład:
źródło
Czy xxxxxxxxxxxx określa nazwę pliku lub nazwę katalogu docelowego
źródło
Ten sam problem napotkałem, gdy próbowałem skopiować plik o nowej nazwie tylko wtedy, gdy plik nie istnieje w miejscu docelowym lub istnieje (z nową nazwą), ale jest starszy. Rozwiązaniem jest dodanie
*
znaku na końcu nazwy pliku docelowego. Przykład:źródło
Nie można określić, że zawsze jest to plik. Jeśli nie potrzebujesz innych funkcji xcopy, dlaczego po prostu nie używasz regularnie
copy
?źródło
copy
, że będąc wewnętrznym poleceniem, nie ustawia ErrorLevel. Jeśli chcesz mieć wpływ na ścieżkę pliku wsadowego, jeśli wystąpi błąd kopiowania, musisz użyćXCOPY
.