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

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

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

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


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

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


проблема в том что Del принимает только один параметр. тогда проще может перейти в каталог для удаления и удалить оттуда? просто масок должно быть несколько
Код: Выделить весь код
@echo off

ECHO Program 2
IF '%1'=='' (
    ECHO No args
    GOTO :END
     ) ELSE ( 
     ECHO CHECK
     GOTO :BEGIN )

:BEGIN
DEL %1
SHIFT /1
if '%1'=='' GOTO :END
GOTO :BEGIN
:END
пока что есть только это

Отправлено: 22:32, 15-09-2011

 

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


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

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


Вот ещё вопрос - как найти в файлы каком то каталоге не перемещаясь туда?

Отправлено: 23:32, 15-09-2011 | #2



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

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


Ветеран


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

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


Два варианта:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sArgs=%*

if not defined sArgs (
	echo Error: no arguments
	echo.

	call :Usage
	exit /b 1
)

rem Вариант 1
call :DeleteByMask %sArgs%

rem Вариант 2, по-файлово
for %%i in (%sArgs%) do (
	echo Delete [%%i]
	del %%i 2>nul
)

endlocal
exit /b 0

:DeleteByMask
	set sMask=%~1
	if not defined sMask exit /b 0

	echo Delete by [%sMask%]
	del %sMask% 2>nul
	shift
	goto :DeleteByMask

:Usage
	echo Usage:
	echo %~nx0 ^<mask^> [^<mask^> ...]
	exit /b 0
Удаление производится в текущем каталоге.
Цитата Gablik:
Вот ещё вопрос - как найти в файлы каком то каталоге не перемещаясь туда? »
Как обычно — указывая полный путь. Или всё же временно перемещаясь туда — пользуйте pushd/popd.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:47, 16-09-2011 | #3


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


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

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


И последний вопрос
как через сценарий проверить что другой файл является батником или сценарием и запустить его?

Отправлено: 01:57, 16-09-2011 | #4


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


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

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


Код: Выделить весь код
@echo off

IF '%1'=='' (
     ECHO NO ARGS
     GOTO :END
    ) ELSE (
      pushd %1
      GOTO :BEGIN )
:BEGIN
DIR /B /S %2
SHIFT /2
IF '%2'=='' GOTO :END
GOTO :BEGIN
:END
popd
не работает. все равно находит файлы в каталоге где находится cmd Файл

Последний раз редактировалось Gablik, 16-09-2011 в 02:35. Причина: нашел ошибку


Отправлено: 02:33, 16-09-2011 | #5


Ветеран


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

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


Цитата Gablik:
как через сценарий проверить что другой файл является батником или сценарием и запустить его? »
Например, так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=%~1

if defined sFile (
	if exist "%sFile%" (
		call :CheckExt "%sFile%" && echo File [%sFile%] is not executable || echo File [%sFile%] is executable
	) else (
		echo File [%sFile%] not found
	)
) else (
	echo Need argument
)


endlocal
exit /b 0

:CheckExt
	setlocal
	for %%i in (%PATHEXT:;= %) do if /i [%%i] == [%~x1] exit /b 1
	exit /b 0
Цитата Gablik:
не работает. все равно находит файлы в каталоге где находится cmd Файл »
Укажите, как именно Вы вызываете пакетный файл, что указываете аргументами.
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:09, 16-09-2011 | #6


Аватара для SANIOK_AV

Старожил


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

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


Извините что влажу
Iska, то есть для
Код: Выделить весь код
call
exitCode со значением "1" означает "завершение с ошибкой"?
И как вобще узнать эти значения для других команд?

Отправлено: 16:16, 16-09-2011 | #7


Ветеран


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

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


SANIOK_AV, несколько раз начинал писать большую петицию, написание растягивалось, браузер падал, машина зависала… Стало быть, не судьба, отпишусь нынче коротко.

Цитата SANIOK_AV:
Iska, то есть для
Код: Выделить весь код
call
exitCode со значением "1" означает "завершение с ошибкой"? И как вообще узнать эти значения для других команд?»
Не совсем так.

Исторически было принято считать нулевой код возврата дочернего процесса его корректным завершением, а ненулевые коды возврата — использовать для уведомления родительского процесса дочерним процессом о той или иной ошибке в своей работе.

Тут, опять же, есть проблема — что именно считать ошибкой? Скажем, некоторые приложение вовсе не устанавливают код возврата, иные же, например, «choice.exe» — используют код возврата для уведомления родительского процесса о сделанном пользователем выборе, а не об ошибке.

Так что, является ли ненулевой код возврата ошибкой или не является — заранее сказать ничего нельзя, нужно знать конкретное приложение, о котором ведётся речь.

Возвращаясь к «call», скажу, что всё изложенное выше справедливо и для пакетных файлов — как Вы сочтёте нужным считать, так и будет.

Информацию о кодах возврата конкретных приложений стоит узнавать непосредственно из их документации (причём, от версии к версии информация может отличаться). Касаемо внутренних и внешних команд операционной системы документацию можно взять в «%SystemRoot%\Help\ntcmds.chm» — для XP, в Windows Command Reference — для более старших версий и, наконец, в MSDN/TechNet/KB непосредственно на сайте Microsoft.

Отправлено: 06:14, 06-12-2011 | #8


Старожил


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

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


Изображения
Тип файла: png 06_12_2011.18-01-26.28.png
(3.6 Kb, 17 просмотров)

Цитата Gablik:
Del принимает только один параметр.»
O_o
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:04, 06-12-2011 | #9


Ветеран


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

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


Угу, для меня это тоже когда-то было откровением. Пусть теперь и коллега Gablik порадуется.

Отправлено: 21:33, 06-12-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удалить папки по маске run0ut Скриптовые языки администрирования Windows 9 21-03-2017 01:27
CMD/BAT - копирование файлов удовлетворяющих маске из одного каталога в два других Gablik Скриптовые языки администрирования Windows 5 15-09-2011 15:13
Переименовать файлы по маске и времени создания porokh AutoIt 1 18-08-2011 11:13
Как удалить разделы в реестре по маске? TempUser AutoIt 0 14-05-2011 15:49
Удалить файлы в папке по маске Nealles Программирование и базы данных 4 10-09-2003 23:11




 
Переход