Использование команды '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\"
)