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

composter 25-08-2012 23:51 1977028

Удаление всех файлов из папки кроме батника
 
Добрый день.хочу сделать батник ,который бы удалял бы все файлы и папки из той папки в которой он запущен. вот что у меня вышло
Код:

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 1977093

Код:

@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 2119045

Цитата:

Цитата composter
хочу сделать батник ,который бы удалял бы все файлы и папки из той папки в которой он запущен»

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

Foreigner 26-03-2013 19:28 2119173

7ka,
Код:

rd /s /q "%~dp0"
Соответственно он не удалит папку, в которой находится, если папка открыта другой программой

Dragokas 26-03-2013 23:20 2119392

Код:

cd..
rd /s /q "%~dp0"

А это удалит и саму папку, если запускать с проводника или ярлыка
и при указанном Foreigner-ом условии.

7ka 27-03-2013 07:26 2119654

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

Dragokas 27-03-2013 16:12 2120008

Экспромт ответ: команда Exit.

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

Foreigner 27-03-2013 20:33 2120265

Я не знаю, как запускается второй батник, но вполне можно его запустить так:
Код:

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

7ka 28-03-2013 17:56 2120886

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 2121733

Актуально!

Foreigner 29-03-2013 20:41 2121761

Цитата:

Цитата 7ka
Актуально! »

А ты пробовал?
Код:

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

7ka 30-03-2013 08:25 2122012

Цитата:

Цитата Foreigner
А ты пробовал? »

да, работает, спасибо)


Время: 05:53.

Время: 05:53.
© OSzone.net 2001-