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

njg 21-01-2009 19:09 1015028

Как удалять файлы по размеру из командного файла?
 
Нужно удалить все файлы меньше 1kb в директории и в поддиректориях с помощью командного файла или скрипта.
Как это сделать и можно ли вообще это сделать?

Petya V4sechkin 21-01-2009 20:36 1015122

njg, допустим, папка Z:\SomeFolder:
Код:

@Echo Off
SetLocal EnableExtensions

Set Fldr=Z:\SomeFolder
For /R %Fldr% %%I In (*.*) Do If %%~zI LSS 1024 Del /F /Q "%%~I"


njg 22-01-2009 00:18 1015359

Хочу сделать примерно так:

Код:

@Echo Off
SetLocal EnableExtensions

For /F "UseBackQ Delims=" %%I In (`Dir /AD /B /ON 2^>nul`) Do (
  Set Folder=%%~I
  echo %Folder%
  For /R %Folder% %%I In (*.*) Do If %%~zI LSS 1024 Del /F /Q "%%~I"
)

Подскажите в чем ошибка?

Petya V4sechkin 22-01-2009 09:02 1015537

njg, я привел рабочий вариант. Вас что-то не устраивает?

JimmOnLine 23-10-2014 09:06 2419169

Добрый день!
Вопрос по теме: А каким образом выполнить перемещение из одного каталога в другой файлы, размер которых составляет меньше 1 кб?

Iska 23-10-2014 09:49 2419186

Например, так:
читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=E:\Песочница\0404\01
set sDestFolder=E:\Песочница\0404\02

set /a iSize = 1^<^<10

if exist "%sSourceFolder%\." (
        if exist "%sDestFolder%\." (
                pushd "%sSourceFolder%"
               
                for /f "usebackq delims=" %%i in (
                        `2^>nul dir /b /a:-d "*.*"`
                ) do if %%~zi lss %iSize% (
                        echo Moving [%sSourceFolder%\%%~i] into folder [%sDestFolder%]...
                        move "%%~i" "%sDestFolder%\"
                )
               
                popd
        ) else (
                echo Can't find destination folder [%sDestFolder%].
                exit /b 2
        )
) else (
        echo Can't find source folder [%sSourceFolder%].
        exit /b 2
)

endlocal
exit /b 0


JimmOnLine 23-10-2014 11:27 2419228

Работает.
Спасибо большое.

А для файлов размер которых составляет 0 кб?

Iska 23-10-2014 12:18 2419257

Цитата:

Цитата JimmOnLine
А для файлов размер которых составляет 0 кб? »

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=E:\Песочница\0404\01
set sDestFolder=E:\Песочница\0404\02

set /a iSize = 0

if exist "%sSourceFolder%\." (
        if exist "%sDestFolder%\." (
                pushd "%sSourceFolder%"
               
                for /f "usebackq delims=" %%i in (
                        `2^>nul dir /b /a:-d "*.*"`
                ) do if %%~zi equ %iSize% (
                        echo Moving [%sSourceFolder%\%%~i] into folder [%sDestFolder%]...
                        move "%%~i" "%sDestFolder%\"
                )
               
                popd
        ) else (
                echo Can't find destination folder [%sDestFolder%].
                exit /b 2
        )
) else (
        echo Can't find source folder [%sSourceFolder%].
        exit /b 2
)

endlocal
exit /b 0


Iska 28-08-2017 17:33 2761162

Из письма на почту:
Цитата:

Цитата jkot1094
Здавствуйте, в данной теме http://forum.oszone.net/thread-129366.html вы помогли с кодом который удаляет файлы по размеру меньше 1-го килобайта. Вот прикладываю код. Такая ситуация, если дописываем дополнительные пути - скрипт все равно перемещает файлы только из одного путя. Помогите пожалуйста сделать так чтобы можно было добавлять много путей из которых перемещать файлы
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=C:\Users\Mario\Desktop\STASJI\112
set sSourceFolder=C:\Users\Mario\Desktop\STASJI\113
set sDestFolder=C:\Users\Mario\Desktop\STASJI\vsesuda
set /a iSize = 1^<^<10

if exist "%sSourceFolder%\." (
        if exist "%sDestFolder%\." (
                pushd "%sSourceFolder%"

                for /f "usebackq delims=" %%i in (
                        `2^>nul dir /b /a:-d "*.*"`
                ) do if %%~zi lss %iSize% (
                        echo Moving [%sSourceFolder%\%%~i] into folder [%sDestFolder%]...
                        move "%%~i" "%sDestFolder%\"
                )

                popd
        ) else (
                echo Can't find destination folder [%sDestFolder%].
                exit /b 2
        )
) else (
        echo Can't find source folder [%sSourceFolder%].
        exit /b 2
)

endlocal
exit /b 0


Помог с кодом, «который удаляет файлы по размеру меньше 1-го килобайта» не я, а Petya V4sechkin. А вот код, который Вы использовали, действительно мой, но он про перемещение по размеру.

Попробуйте так (не проверялось):
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolders="C:\Users\Mario\Desktop\STASJI\112" "C:\Users\Mario\Desktop\STASJI\113" "C:\Users\Mario\Desktop\STASJI\114" "C:\Users\Mario\Desktop\STASJI\NNN"
set sDestFolder=C:\Users\Mario\Desktop\STASJI\vsesuda

set /a iSize = 1^<^<10

for %%i in (%sSourceFolders%) do (
        if exist "%sDestFolder%\." (
                if exist "%%~i\." (
                        pushd "%%~i"
                       
                        for /f "usebackq delims=" %%j in (
                                `2^>nul dir /b /a:-d "*.*"`
                        ) do if %%~zj lss %iSize% (
                                echo Moving [%%~i\%%~j] into folder [%sDestFolder%]...
                                move "%%~j" "%sDestFolder%\"
                        )
               
                        popd
                ) else (
                        echo Can't find source folder [%%~i].
                )
        ) else (
                echo Can't find destination folder [%sDestFolder%].
                exit /b 1
        )
)

endlocal
exit /b 0


Никаких проверок на наличие уже существующих файлов в целевом каталоге не делается.


Время: 11:30.

Время: 11:30.
© OSzone.net 2001-