Как удалить файлы из списка? - PullRequest
5 голосов
/ 11 октября 2011

У меня есть файловая система, которая использует алгоритм хеширования для организации файлов.В прошлом я использовал xcopy для копирования файлов в другое место, передавая файл со списком всех файлов и повторяя его.Сценарий выглядит примерно так:

for /f "delims=, tokens=1,2,3" %i in (D:\foo.csv) 
do echo F | xcopy /i /d "Z:\%i\%j\%k" "Y:\%i\%j\%k" >> "D:\xcopy\Log.txt"

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

Спасибо!

Ответы [ 3 ]

2 голосов
/ 24 октября 2011

Вы можете использовать круглые скобки для обозначения нескольких команд, которые должны быть исключены операндом for:

for /f "delims=, tokens=1,2,3" %%i in (D:\foo.csv) do (
    echo F | xcopy /i /d "Z:\%%i\%%j\%%k" "Y:\%%i\%%j\%%k" >> "D:\xcopy\Log.txt"
    del /F "Z:\%%i\%%j\%%k"
)
1 голос
/ 27 октября 2011

На первый взгляд вы можете использовать команду move вместо xcopy , поскольку вы не используете никаких расширенных функций из xcopy .Предполагается, что / d используется для копирования файлов только в том случае, если они новее, но вы не знаете, насколько это полезно для ваших целей, поскольку вы хотите их удалить.В противном случае, move не имеет много вариантов, о которых можно говорить.

Другой возможный и немного более сложный метод - robocopy .
robocopy /MOVE /XO "Z:\%i\%j\%k" "Y:\%i\%j\%k"
/MOVE удаляет как папки, так и файлы после копирования, а флаг /XO исключает копирование старых файлов.robocopy в основном доступен в более новых операционных системах (т.е. не в XP).Вы можете проверить вышеупомянутую ссылку для более подробной информации.

Надеюсь, это поможет.Хотя использование del, как уже упоминалось ранее, также должно работать.

1 голос
/ 24 октября 2011

Я не знаком с Windows (я рад, что использую Gnu / Linux с 1993 года), но, возможно, вы могли бы добавить какую-нибудь команду с переменными, такими как del %n, где-нибудь (или заменить xcopy своим собственным файлом .bat, делая то, чтохочешь)

...