Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как удалять файлы по размеру из командного файла?

Ответить
Настройки темы
CMD/BAT - Как удалять файлы по размеру из командного файла?
njg njg вне форума

Новый участник


Сообщения: 46
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

Отправлено: 19:09, 21-01-2009

 


Moderator


Сообщения: 53328
Благодарности: 15469

Профиль | Отправить PM | Цитировать


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"

Последний раз редактировалось Petya V4sechkin, 21-01-2009 в 20:50.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:36, 21-01-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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

njg njg вне форума Автор темы

Новый участник


Сообщения: 46
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
@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"
)
Подскажите в чем ошибка?

Отправлено: 00:18, 22-01-2009 | #3



Moderator


Сообщения: 53328
Благодарности: 15469

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:02, 22-01-2009 | #4


Аватара для JimmOnLine

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

-------
ДМБ 2011 г.


Отправлено: 09:06, 23-10-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Например, так:
читать дальше »
Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:49, 23-10-2014 | #6


Аватара для JimmOnLine

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

-------
ДМБ 2011 г.


Отправлено: 11:27, 23-10-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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

Отправлено: 12:18, 23-10-2014 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Из письма на почту:
Цитата 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

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

Отправлено: 17:33, 28-08-2017 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как удалять файлы по размеру из командного файла?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] подсчет времени выполнения командного файла mitiya Скриптовые языки администрирования Windows 5 15-04-2014 10:42
[решено] Как в XP SP3 удалять файлы без подтверждения? shemp Хочу все знать 6 03-10-2011 14:08
Загрузка - [решено] Как в планировщике заданий скрыть запуск командного файла? _dandelion_ Microsoft Windows 7 3 20-09-2009 12:49
Автоматическая установка драйверов с помощью командного файла Miha876 Автоматическая установка Windows 2000/XP/2003 2 21-12-2007 03:17
Как удалять файлы без сохранения в корзине . SergeiB Microsoft Windows 2000/XP 11 24-02-2003 13:53




 
Переход