PDA

Показать полную графическую версию : Удаление всех файлов из папки кроме батника


composter
25-08-2012, 23:51
Добрый день.хочу сделать батник ,который бы удалял бы все файлы и папки из той папки в которой он запущен. вот что у меня вышло

set FILEMASK=*.*
set FILEPATH=%CD%
for /f "tokens=* delims=" %%i in ('dir /b /s "%FILEPATH%\%FILEMASK%"') do if /i not "%%i" == "%%~dpi%~nx0" del /f /s /q tokens=* delims= %%i

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

Foreigner
26-08-2012, 09:30
@echo off

pushd "%~dp0" || goto:eof
for /f "tokens=*" %%i in ('dir /b') do if not "%%~nxi"=="%~nx0" del "%%i"
popd

7ka
26-03-2013, 16:53
хочу сделать батник ,который бы удалял бы все файлы и папки из той папки в которой он запущен»
интересует тот-же вопрос, только что бы удалял всю папку со всем содержимым, т.е. включая и себя. возможно ли такое?

Foreigner
26-03-2013, 19:28
7ka,

rd /s /q "%~dp0"

Соответственно он не удалит папку, в которой находится, если папка открыта другой программой

Dragokas
26-03-2013, 23:20
cd..
rd /s /q "%~dp0"
А это удалит и саму папку, если запускать с проводника или ярлыка
и при указанном Foreigner-ом условии.

7ka
27-03-2013, 07:26
Foreigner, Diskretor, после отработки батника остается висеть окно командной строки. Наверное мне нужно было объяснить все условия запуска:
Запуск происходит со съемного носителя, запускаю первый батник с флешки, он находит флешку в системе и определенную папку на ней, копирует ее в путь %SystemDrive%, запускает из скопированной папки второй батник и завершает свою работу. Второй батник отработав должен удалить скопированную ранее со съемного носителя папку и завершить свою работу но, раз он находится в той-же директории и запущен то после отработки остается висеть окно командной строки с надписью "Системе не удается найти указанный путь.", сама-же папка удалется полностью, вместе со вторым батником. Вот в этом и стоит задача: как закрыть окно командной строки?!

Dragokas
27-03-2013, 16:12
Экспромт ответ: команда Exit.

А по факту, тяжело Вам что либо подсказать без кода.
Вероятно, у Вас последующий батник запускается командой Start место Call, поэтому окно и остается висеть.

Foreigner
27-03-2013, 20:33
Я не знаю, как запускается второй батник, но вполне можно его запустить так:

2>nul cmd /c "%SystemDrive%\Folder\second.cmd"

7ka
28-03-2013, 17:56
Diskretor, Foreigner

Тело первого батника copy2start.bat:
@echo off
title Unattended Install
taskkill /f /im explorer.exe>nul
echo ================================================================================
echo Автоматическая установка приложений
echo ================================================================================
echo.
echo Копирование установочных файлов
echo.
echo Пожалуйста, подождите...
for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%d:\copy2start.bat set diskdrive=%%d:
robocopy %diskdrive%\install /e /ns /nc /nfl /ndl /np /eta /njh /njs %systemdrive%\install
echo.
echo Копирование завершено!
%systemdrive%\install\start.bat
exit

Тело второго батника start.bat (весь код не буду приводить, только начало и конец):
@echo off
title Unattended Install
echo ================================================================================
echo Автоматическая установка приложений
echo ================================================================================
echo.
echo Установка приложений
echo.
echo Пожалуйста, подождите...
start /wait %systemdrive%\install\[программа.exe] [/ключ]
start /wait %systemdrive%\install\[программа.exe] [/ключ]
start /wait %systemdrive%\install\[программа.exe] [/ключ]
etc...
echo.
echo Установка завершена!
shutdown -s -t 10 -f
rd /s /q %systemdrive%\install
exit

7ka
29-03-2013, 20:20
Актуально!

Foreigner
29-03-2013, 20:41
Актуально! »
А ты пробовал? (http://forum.oszone.net/post-2120265-8.html)

2>nul cmd /c "%systemdrive%\install\start.bat"

7ka
30-03-2013, 08:25
А ты пробовал? »
да, работает, спасибо)




© OSzone.net 2001-2012