Показать полную графическую версию : Удаление всех файлов из папки кроме батника
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
хочу сделать батник ,который бы удалял бы все файлы и папки из той папки в которой он запущен»
интересует тот-же вопрос, только что бы удалял всю папку со всем содержимым, т.е. включая и себя. возможно ли такое?
Foreigner
26-03-2013, 19:28
7ka,
rd /s /q "%~dp0"
Соответственно он не удалит папку, в которой находится, если папка открыта другой программой
Dragokas
26-03-2013, 23:20
cd..
rd /s /q "%~dp0"
А это удалит и саму папку, если запускать с проводника или ярлыка
и при указанном Foreigner-ом условии.
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"
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
Foreigner
29-03-2013, 20:41
Актуально! »
А ты пробовал? (http://forum.oszone.net/post-2120265-8.html)
2>nul cmd /c "%systemdrive%\install\start.bat"
А ты пробовал? »
да, работает, спасибо)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC