Компьютерный форум 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=324942)

vk_k14m@vk 17-03-2017 01:44 2720215

Обнуление файлов в папке с подпапками
 
Есть папка. В ней может быть бесконечное количество подпапок (на самом деле не больше трех). Пример:
data\4f\cd
data\0b\72
data\fd\b0
data\sample\0a\96
data\sample\92\ef
data\sample\fd\db
и т.д.

Помогите написать скрипт, который будет помещен в папку "data". И при запуске обнулит размер (почти) всех файлов в подпапках без удаления этих файлов. И еще что б скрипт не трогал файл "Descr.WD3" который лежит в каждой конечной папке.

Iska 17-03-2017 03:05 2720221

Цитата:

Цитата vk_k14m@vk
обнулит размер (почти) всех файлов в подпапках без удаления этих файлов. »

Зачем?

vk_k14m@vk 17-03-2017 04:44 2720225

Цитата:

Цитата Iska
Зачем? »

Наверно незачем. В другой теме уже ответили. Но как альтернативный вариант хотелось бы попробовать.

Iska 17-03-2017 07:05 2720240

vk_k14m@vk, Вы не ответили на вопрос. В чём будет состоять этот альтернативный вариант?

vk_k14m@vk 17-03-2017 17:28 2720453

Цитата:

Цитата Iska
vk_k14m@vk, Вы не ответили на вопрос. В чём будет состоять этот альтернативный вариант? »

Мне нужно изменить неправильные расширения на правильные что с ними работать. Если я просто переименую или перемещу оригиналы то загрузкик скачает эти файлы заново. Можно сделать на эти файлы жесткие/символические ссылки и работать с ними не трогая оригиналы. А можно скопировать все оригиналы в другую папку, изменить расширение. А у оригиналов обнулить вес. Таким образом у меня будет две копии файлов. Но так как размер оригиналов нулевой то они не будут дважды занимать место на диске.

Сам загрузчик не сверяет объем файлов. Он смотрит только само наличие. Так что это можно назвать альтернативным решением моей проблемы.

Iska 17-03-2017 17:46 2720455

Цитата:

Цитата vk_k14m@vk
А у оригиналов обнулить вес. … Сам загрузчик не сверяет объем файлов. Он смотрит только само наличие.»

Вы пишете, что не сравнивает — но по умолчанию обязательно должен сравнивать.

Думаю, вариант с жёсткими ссылками в параллельном каталоге будет проще и надёжнее.

vk_k14m@vk 18-03-2017 03:11 2720599

Цитата:

Цитата Iska
Вы пишете, что не сравнивает — но по умолчанию обязательно должен сравнивать. »

Сравнивает если поставить эту галочку
Скрытый текст


С такими настройка он будет просто проверять наличие файлов
Скрытый текст


Цитата:

Цитата Iska
Думаю, вариант с жёсткими ссылками в параллельном каталоге будет проще и надёжнее. »

Поверю на слово

megaloman 18-03-2017 15:50 2720711

Если очень хочется обнулить размер (почти) всех файлов в подпапках без удаления этих файлов
Код:

@Echo Off

Set "BoxIn=Z:\Data\*.*"

Set "Exclude=\Descr.WD3"

Echo %Exclude%>~Exclude.tmp
Echo %~nx0>>~Exclude.tmp
md >"%~nx0.tmp" 2>nul

FOR /F "usebackq delims=" %%f IN (`xcopy "%BoxIn%" "%Tmp%\" /S /L /EXCLUDE:~Exclude.tmp`) DO If Exist "%%~dpnxf" Copy "%~nx0.tmp" "%%~dpnxf" >nul

Del ~Exclude.tmp
Del "%~nx0.tmp"

Здесь указан полный путь к обрабатываемой папке Data, это сделано намеренно для безопасности
Можно и без указания пути, но очень опасно
Код:

@Echo Off

Set "Exclude=\Descr.WD3"

Echo %Exclude%>~Exclude.tmp
Echo %~nx0>>~Exclude.tmp
md >"%~nx0.tmp" 2>nul

FOR /F "usebackq delims=" %%f IN (`xcopy *.* "%Tmp%\" /S /L /EXCLUDE:~Exclude.tmp`) DO If Exist "%%~dpnxf" Echo Copy "%~nx0.tmp" "%%~dpnxf" >nul

Del ~Exclude.tmp
Del "%~nx0.tmp"

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


Время: 23:21.

Время: 23:21.
© OSzone.net 2001-