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\
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\
Odpowiedzi:
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.
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 for
pętli do przejścia przez wszystkie dostępne wartości i wywołujesz sub, CopySet
aby 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 :eof
polecenie do zakończenia podrzędnego i powrotu do poprzednio wywoływanej linii.