Plik wsadowy, kopiuj pliki zaczynające się od (A, B, C, D, E)

1

Czy zamiast 6 razy uruchamiać xcopy, czy istnieje sposób zdefiniowania tablicy plików do skopiowania?

xcopy \\\from_location\\(A,B,C,D,E)*.txt \\\to_location\

SUpermammal
źródło

Odpowiedzi:

1

Nie tylko z XCOPY. Ale proste stwierdzenie FOR może pomóc:

for %A in (A B C D E) do xcopy "fromPath\%A*.txt"  "toPath"
dbenham
źródło
0

Nie jestem pewien, czy istnieją jakieś rodzime sposoby, aby to zrobić, ale możesz zobaczyć ten post, aby uzyskać informacje na temat interfejsu GUI i narzędzia wiersza poleceń, które ma na każdy możliwy sposób na zmianę nazwy plików z wzorami.

Jeśli użyjesz tego narzędzia z wiersza polecenia i dodasz je do swojego PATH, powinieneś być w stanie używać go z pliku wsadowego.

Nate Mara
źródło
0

Link MaQleod zawiera odpowiedź Powershell, ale jeśli interesuje Cię odpowiedź skryptu wsadowego, oto jeden ze sposobów, aby to zrobić:

@echo off
set __fileset.1=a*.txt
set __fileset.2=b*.txt
set __fileset.3=c*.txt
set __fileset.4=d*.txt
set __fileset.5=e*.txt

for /f "tokens=2* delims=.=" %%g in ('SET __fileset.') do call :CopySet "%%h"
goto :exit

:CopySet
echo xcopy "%~dpxn1" "\to_location\." /v
goto :eof

:exit

Korzystając ze __fileset.zmiennych środowiskowych, tworzysz pseudo-tablicę w pliku wsadowym. Następnie używasz forpętli do przejścia przez wszystkie dostępne wartości i wywołujesz sub, CopySetaby wykonać właściwe polecenie kopiowania. Oczywiście skrypt można ulepszyć, ale jest to tylko przykład tego, jak to zrobić.

Upewnij się, że ostatni wiersz w skrypcie wsadowym jest pusty, ponieważ jest używany przez goto :eofpolecenie do zakończenia podrzędnego i powrotu do poprzednio wywoływanej linii.

JSanchez
źródło