Вы должны войти, чтобы создавать сообщения и темы.

Скрипт на перемещение каталогов и файлов с исключениями

Доброго времени суток! Помогите автоматизировать процесс перемещения копирования с основной машины на виртуальную.
На основном хосте есть общая папка виртуальной машины (Z:) на ней находится папка User1 (пустая), которую перемещать не надо, а все остальные каталоги (в том числе пустые) и файлы (.exe .txt .rar и т. п.) перемещались по таймеру в 1 минуту (или без таймера, можно же через планировщик добавить).

Пробовал через Xcopy и RD, но не могу добавить в исключения папку User1 при удалении.

Илья, Привет.
Скинь код который делал, доделаем его.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, я его через .bat делал.

.bat

XCOPY C:\Users\Имя пользователя\Desktop\Test1 E:\Test2 /s /y
\User1\
CD C:\Users\Имя пользователя\Desktop\Test1
RD /s /q C:\Users\Имя пользователя\Desktop\Test1

 

Илья, попробуй: заменить пути, source - откуда, destination - куда.

@echo off
set "source=C:\Users\PC\Desktop\test1"
set "destination=C:\Users\PC\Desktop\test2"

robocopy "%source%" "%destination%" /E /XD "User1" /R:1 /W:1
RD /s /q "%source%"

Только я не понял, папку удалять с которой копировалось вместе с User1 или нет?, потому как твой код удаляет папку.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, Спасибо! Но можете сделать так, чтобы содержимое каталога test1 копировалось, папка test1 нужна, и в ней исключение User1, то есть она без файлов внутри и каталогов, пустая изначально, и чтобы она оставалась не тронутой в каталоге test1? А все остальные каталоги (в том числе пустые), и файлы без исключения копировались/переносились в папку test2, при этом саму папку test1 оставлять не тронутой...

Илья, Держи.

@echo off

robocopy "C:\Users\PC\Desktop\test1" "C:\Users\PC\Desktop\test2" /E /XD "User1"

 

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, Спасибо большое! Но еще один вопрос😅, надо чтобы он в папке test1 удалял файлы и каталоги (в том числе пустые) после копирования, кроме User1.

Илья, Дубль)

@echo off

set "source_dir=C:\Users\PC\Desktop\test1"
set "dest_dir=C:\Users\PC\Desktop\test2"

robocopy "%source_dir%" "%dest_dir%" /E /XD "User1"

pushd "%source_dir%"
    for /d %%D in (*) do (
        if /i not "%%D" == "User1" (
            rd /s /q "%%D"
        )
    )
    del /q *.*
popd

 

Лайкнули Илья и Psydiant
ИльяPsydiant
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, приветствую! Он удаляет и test1 и test2, попробовал на раб столе, всё переместил и исчезли файлы и папки...

Ничего не удаляет, как ты написал в предыдущей сообщении, так он и делает. Записал gif, то есть после копирование из 1 в 2, он удаляет файлы в 1 кроме user1 и оставляет папку.

Так как ты и написал:

надо чтобы он в папке test1 удалял файлы и каталоги (в том числе пустые) после копирования, кроме User1.

Лайкнул Psydiant
Psydiant
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, простите пожалуйста...Это я дурак! Путь не так вписал, всё работает как надо, спасибо огромное!🤝

Лайкнул Mikhail
Mikhail