1

Вместо того, чтобы запускать xcopy 6 раз, есть ли способ определить массив файлов для копирования?

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

3 ответа3

1

Не только с XCOPY. Но простое утверждение FOR может помочь:

for %A in (A B C D E) do xcopy "fromPath\%A*.txt"  "toPath"
0

Я не уверен в каких-либо нативных способах сделать это, но вы можете просмотреть этот пост для получения информации о графическом интерфейсе и инструменте командной строки, в котором есть все возможные способы переименования файлов с шаблонами.

Если вы используете версию этого инструмента для командной строки и добавите ее в PATH , вы сможете использовать ее из командного файла.

0

Ссылка MaQleod предоставляет ответ Powershell, но если вы заинтересованы в ответе на пакетный скрипт, вот один из способов сделать это:

@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

Используя __fileset. переменные окружения, вы создаете псевдомассив в пакетном файле. Затем вы используете цикл for для обхода всех доступных значений и вызываете вспомогательный CopySet для выполнения фактической команды копирования. Конечно, скрипт может быть улучшен, но это всего лишь пример того, как это сделать.

Убедитесь, что последняя строка в пакетном скрипте пуста, так как она используется командой goto :eof для завершения подпрограммы и возврата к предыдущей вызывающей строке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .