Jak mogę skopiować plik za pomocą poleceń DOS do struktury katalogów, która może jeszcze nie istnieć? Muszę mieć możliwość wymuszenia utworzenia ścieżki katalogu do docelowej lokalizacji pliku, jeśli ta lokalizacja jeszcze nie istnieje.
Na przykład w tej lokalizacji znajduje się już plik.txt:
C:\file.txt
I chcę to skopiować
C:\example\new\path\to\copy\of\file\file.txt
ale w tej chwili
C:\example\
i wszystkie podkatalogi mogą jeszcze nie istnieć.
Zasadniczo szukam polecenia „skopiuj i w razie potrzeby utwórz ścieżkę docelową”. Jaki byłby najlepszy sposób, aby to osiągnąć?
Windows command line
w tytule / treści wraz z tagami windows i wierszem poleceń (zauważ, że cmd.exe jest synonimem wiersza poleceń ). Tag ms-dos powinien zostać usunięty; i tagu dos nie należy w żadnym wypadku używać.Odpowiedzi:
Tak, to jest xcopy . Oto jak to będzie wyglądać:
Informacje o XCOPY pod adresem
Możesz także zajrzeć do ROBOCOPY , w zestawie zasobów XP i standardzie w Vista, Windows 7 i Server 2008.
źródło
echo f |
z xcopy, aby automatycznie odpowiedzieć na to pytanie.Próbowałem użyć czegoś takiego:
Ale zapytałoby mnie, czy to plik czy katalog. Ponieważ miałem to w pliku wsadowym z 40000 plików, byłoby to niepraktyczne. To rozwiązanie rozwiązuje tylko częściowo mój problem: tworzy strukturę katalogów, ale wymaga interakcji użytkownika. Tutaj znalazłem rozwiązanie mojego problemu:
https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder
Co w zasadzie polega na dodaniu „*” na końcu pliku docelowego:
EDYCJA: jak wskazuje @romkyns, może mieć niepożądane wyniki, jeśli masz pliki o tej samej nazwie plus coś innego (np. „File.txt.bak”). W tym samym wątku opublikowanym powyżej innym działającym rozwiązaniem jest przesłanie polecenia „echo f” do polecenia:
Gdzie należy zastąpić literę „f” dowolną literą, której system używa do pliku, na wypadek, gdybyś używał jej w innym języku…
źródło
file.txt.bak
oczywiście działa tylko wtedy, gdy nie ma go w katalogu. Mimo to może to działać w niektórych scenariuszach.echo f |
nie musisz już kończyć*
.DOS, wow! W każdym razie używasz polecenia XCOPY .
źródło
Niezależnie od tego, czy używasz
copy
lubxCopy
, aby uniknąć błęducopy
lub pytania zxCopy
, sprawdź, czy istnieje potrzebny folder i utwórz go, jeśli to konieczne:lub połącz polecenia z
&&
jednym wierszem poleceń:To samo można zrobić
move
zamiastcopy
. Dowiedziałem się o tej technice od odpowiedzi StackOverflow o tym, jak to zrobićmove
.źródło