Использование команды 'move' вместо 'xcopy' в цикле

Эта строка кода объединяет все папки в каталоге, которые имеют определенный общий текст, и копирует все содержимое этих папок в новое место назначения.

dir /b /s /a:d "\\SERVER\Path\Directory\*FolderTag" | for /f "delims=\; tokens=3,4,5*" %%a in ('findstr FolderTag') do @xcopy /i /s /y "\\SERVER\Path\Directory\%%b\%%c" "E:\%%b\"

Отлично работает. Но я хотел бы иметь возможность перемещать файлы, а не просто копировать их, чтобы они были удалены из их исходного местоположения. Я не могу просто заменить xcopy с move но я не могу понять, как преобразовать структуру этого цикла в тот, который будет работать с движением. Будет ли проще просто написать еще один цикл, который удаляет файлы? Я сомневаюсь rm вместо xcopy будет работать, и я всегда немного боюсь прикоснуться rm,

Я попытался собрать рабочий пример пакетного скрипта, но поскольку цикл так сильно зависит от структуры пути, я не смог заставить его работать. Так что в основном мой вопрос вращается вокруг моей реализации xcopy в этом цикле и как это можно изменить, чтобы move работать на своем месте.

1 ответ

Перемещение должно работать, но вам нужно сначала создать папку, в которую вы перемещаетесь

Кроме того, вы можете иметь несколько команд, выполняющихся на каждой итерации цикла for, используя скобки

Таким образом, следующее должно работать

dir /b /s /a:d "\\SERVER\Path\Directory\*FolderTag" | for /f "delims=\; tokens=3,4,5*" 
%%a in ('findstr FolderTag') do (
mkdir "E:\%%b"
@move /Y "\\SERVER\Path\Directory\%%b\%%c" "E:\%%b\"
)
Другие вопросы по тегам