Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Удаление файлов и папок по списку. (http://forum.oszone.net/showthread.php?t=342612)

passstrada 20-10-2019 21:01 2892918

Удаление файлов и папок по списку.
 
Есть список с путями к файлам и папкам которые нужно удалить. Пример:
Скрытый текст

Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_l_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_l_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_m_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_m_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_s_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_s_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_l_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_l_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_m_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_m_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_s_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_s_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/31_lumber_lm_night
Data/3d/Configs/Particles/31_lumber_lm_night/chassis_effects

Нужно создать .bat который проверяет что в каталоге есть папка Data, если она имеется выполнить удаление файлов и папок по списку txt или log (путь под спойлером).

Iska 20-10-2019 22:21 2892925

Цитата:

Цитата passstrada
Есть список с путями »

С относительными путями (кстати, почему разделитель путей в формате POSIX?). Осталось понять, относительно чего?

Цитата:

Цитата passstrada
Пример: »

Ещё лучше будет упаковать «список с путями к файлам и папкам» в архив и приложить к сообщению.

Цитата:

Цитата passstrada
Нужно создать .bat который проверяет что в каталоге есть папка Data, »

Тот же вопрос — где нужно искать каталог Data? По уму — в текущем каталоге. Но Вам, вероятно, понадобится искать в том каталоге, куда Вы поместите пакетный файл, так?

Цитата:

Цитата passstrada
выполнить удаление файлов и папок по списку »

Судя по примеру,
  1. Удаление каталога .\Data\3d\Configs\Particles\22_italy_it\chassis_effects не предполагается, так?
  2. Удаление каталога/файла .\Data\3d\Configs\Particles\31_lumber_lm_night\chassis_effects бессмысленно, потому как на предыдущем шаге, согласно списка, должен быть удалён родительский каталог .\Data\3d\Configs\Particles\31_lumber_lm_night. Как Вы это поясните?

passstrada 20-10-2019 23:05 2892930

Вложений: 1
Цитата:

Цитата Iska
С относительными путями (кстати, почему разделитель путей в формате POSIX?). Осталось понять, относительно чего? »

Пути относительные из-за того что каталог может находится у каждого пользователя по разному.
У кого-то на C:\papka\Data у кого-то C:\papka\papka\papka\Data или D:\papka1\papka2\papka3\Data.
Файл 159222
Цитата:

Цитата Iska
Вам, вероятно, понадобится искать в том каталоге, куда Вы поместите пакетный файл, так? »

Да
Цитата:

Цитата Iska
Судя по примеру »

1. Да
2. При обновлении каталога. На самом деле это добавилось, мне нужно сделать обратное, удалить то что обновилось.


Сейчас расскажу так что бы было понятней.
Есть допустим программа/игра (portable), при ее обновлении у меня есть список (изменённых файлов, новых файлов и тех файлов которые были удалены). Именно последний список меня и интересует.
Но когда программа/игра не может обновится (нет интернета там и тд. тп.) можно создать свой Update так сказать. Из новых файлов, измененных и в первую очередь - удалением старых в виде списка.
У меня есть относительные пути - но я не пойму как сделать этот uninstall.
Может мне и даже .bat не нужен для удаления по списку. Но я просто подумал что это лучший вариант для его создания и работы со списком.

Iska 21-10-2019 18:09 2893013

passstrada, тогда непонятно, зачем удалять каталоги?

megaloman 22-10-2019 12:09 2893085

passstrada,
Цитата:

Цитата Iska
Вам, вероятно, понадобится искать в том каталоге, куда Вы поместите пакетный файл »

Цитата:

Цитата passstrada
Может мне и даже .bat не нужен для удаления по списку. »

Сделал тупо, как поставлена задача, не вникая глубоко в смысл
Цитата:

Цитата Iska
кстати, почему разделитель путей в формате POSIX »

-пришлось силой заменить / на \
Цитата:

Цитата passstrada
удаление файлов и папок по списку txt или log »

не написали, где этот txt, поэтому список вставил в bat
Код:

@Echo Off
        Call :Reestr "Spis1====="
Exit /B 0

:Reestr
        FOR /F "usebackq tokens=1* delims=:" %%a IN (`2^>nul FINDSTR /I /L /B /N %1 "%~dpnx0"`) DO (
                FOR /F "usebackq delims=" %%s IN (`2^>nul More +%%a "%~dpnx0"`) DO (
                        Echo %%s |Find /I /N %1 >nul 2>&1 &&Exit /B 0
                        Call Set "PS=%%~s"
                        If Exist "%%~s\" >nul 2>&1 Call Rd "%%PS:/=\%%" /Q /S
                        If Exist "%%~s"  >nul 2>&1 Call Del "%%PS:/=\%%"
                )
        )
Exit /B

Spis1=====

Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_l_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_l_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_m_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_m_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_s_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_ground_s_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_l_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_l_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_m_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_m_2_dust2.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_s_1_dust.yaml.dvpl
Data/3d/Configs/Particles/22_italy_it/chassis_effects/wave_stone_s_2_dust2.yaml.dvpl

Data/3d/Configs/Particles/31_lumber_lm_night
Data/3d/Configs/Particles/31_lumber_lm_night/chassis_effects

Spis1=====


Iska 22-10-2019 17:04 2893117

Цитата:

Цитата megaloman
-пришлось силой заменить / на \ »

Необязательно. Пока окончательно POSIX не выпилят, вроде как должно работать и так, и так.

megaloman 22-10-2019 17:20 2893119

Iska,
Цитата:

Цитата Iska
вроде как должно работать и так, и так. »

Rd работает, а del нет.

Iska 22-10-2019 18:07 2893124

megaloman, похоже на то.


Время: 15:54.

Время: 15:54.
© OSzone.net 2001-