Показать полную графическую версию : [решено] Дополнить батник для очистки папки
aggressor_
01-02-2011, 19:47
Здравствуйте! Имеется простенький бат файл
del /S/Q "C:\Program Files\The KMPlayer\Temp"
Хотелось бы его немного изменить:
открывать вначале папку temp, чтобы посмотреть какие файлы и затем задать вопрос об очистки (т.е. что бы появилось окошко с соответствующим вопросом на удаление "да, нет")
открывать вначале папку temp, чтобы посмотреть какие файлы и затем задать вопрос об очистки »не совсем понял, что значит "посмотреть", как вариант:
@echo off
SETLOCAL EnableExtensions
set "$TMP=C:\Program Files\The KMPlayer\Temp"
PUSHD "%$TMP%"||(pause>nul& GoTo:EOF)
dir/b/a/s|findstr ".">nul||(echo Каталог пуст.&pause>nul&GoTo:EOF)
(echo Содержимое каталога "%$TMP%":
echo -----------------------------
dir/b/a/s)|more
:LOOP
set/p YN="Удалить содержимое временного каталога? (Y/N): "
if /i not "%YN%"=="Y" if /i not "%YN%"=="N" GoTo LOOP
if /i "%YN%"=="Y" RD /S/Q "%$TMP%"2>nul&echo Каталог очищен.&pause>nul
POPD& ENDLOCAL
aggressor_
02-02-2011, 16:56
Немного не так...
Нужно сначала открыть указанную папку (вывести на экран не содержимое папки, а саму папку развернуть на экране), а затем предложить удаление ( без Y/N, чтобы можно было мышкой нажать окей)
p.s. в каком шрифте нужно сохранять?
Нужно сначала открыть указанную папку (вывести на экран не содержимое папки, а саму папку развернуть на экране), а затем предложить удаление ( без Y/N, чтобы можно было мышкой нажать окей) »
Привет...
А на VBS не пойдет? Мне, тоже как-то надо было открыть папку в BAT, но нехватило терпения искать и я так до сих пор не знаю.
А на VBS, пожалуйста:
Set objShellApp = CreateObject("Shell.Application")
objShellApp.Open("C:\Program Files\The KMPlayer\Temp")
WScript.Sleep 500
result = MsgBox ("ВЫ ДЕЙСТВИТЕЛЬНО ХОТИТЕ УДАЛИТЬ ПАПКУ?", vbYesNo, "Удаление папки.")
Select Case result
Case vbYes
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder "C:\Program Files\The KMPlayer\Temp"
WScript.Quit
Case vbNo
WScript.Quit
End Select
в каком шрифте нужно сохранять? »DOS 866
открыть указанную папку (вывести на экран не содержимое папки, а саму папку развернуть на экране) »explorer /root,"C:\Program Files\The KMPlayer\Temp"
чтобы можно было мышкой нажать окей »вопрос не совсем в тему - батники для консольных решений, смотрите в сторону WSH/PowerShell/AutoIT
explorer /root,"C:\Program Files\The KMPlayer\Temp" »
Спасибо.А, мне, как раз тоже это было интересно.А на счёт смотрите в сторону WSH »
я с тобой согласен. Не видел твоего сообщения и написал ответ на VBS.
PS: Послушай amel27, может не к месту, но всё же не подскажешь как из текстового файла прочитать в переменную. Ну, на пример, в тексте написано C:\Program Files\ля_ля\гу_гу
Как вывести переменную, чтобы к примеру скопировать туда файлы. Как, я понимаю, для перехода нужно добавить \ ?
как из текстового файла прочитать в переменную. Ну, на пример, в тексте написано C:\Program Files\ля_ля\гу_гу
Как вывести переменную, чтобы к примеру скопировать туда файлы. Как, я понимаю, для перехода нужно добавить \ ? »
for /f
подробнее for /?
set "$TMP=C:\Program Files\The KMPlayer\Temp" » В этом не особо силён, но на сколько я понял, на время сеанса, после запуска этого батника, временной папкой становится именно C:\Program Files\The KMPlayer\Temp, что ни есть очень хорошо.
Я правильно мыслю?
El Sanchez
04-02-2011, 15:59
explorer /root,"C:\Program Files\The KMPlayer\Temp" »
Еще можно просто
start "" "C:\Program Files\The KMPlayer\Temp"
, дабы не плодить explorer.exe
чтобы можно было мышкой нажать окей »
В CMD окей показывает только MSG, наверное:
msg * /W "Очистить папку?"&&RD /S/Q "C:\Program Files\The KMPlayer\Temp" 2>nul
Я правильно мыслю? »
yurfed, нет. Системной переменной %TMP% в скрипте amel27 нет.
дабы не плодить explorer.exe »
да он вроде сам не плодится... если только не запускать с ключом /separate
к сожалению, ни один из этих способов не поддерживает /WAIT (
к сожалению, ни один из этих способов не поддерживает /WAIT »
можно добавить MSG с ключем /W
aggressor_
04-02-2011, 23:41
OSArev,
Set objShellApp = CreateObject("Shell.Application")
objShellApp.Open("C:\Program Files\The KMPlayer\Temp")
WScript.Sleep 500
result = MsgBox ("ВЫ ДЕЙСТВИТЕЛЬНО ХОТИТЕ УДАЛИТЬ ПАПКУ?", vbYesNo, "Удаление папки.")
Select Case result
Case vbYes
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder "C:\Program Files\The KMPlayer\Temp"
WScript.Quit
Case vbNo
WScript.Quit
End Select
А можно подкорректировать, чтобы не папку удалял, а только содержимое?
подробнее for /? »
Почитаем, спасибо...
А можно подкорректировать, чтобы не папку удалял, а только содержимое? »
у amel27: ,здесь есть очень интересный код для очистки папки.
http://forum.oszone.ru/post-1340319.html#post1340319
Подставь свой путь, воткни в исходный VBS, и всё ОК. Не ленись.
PS:amel27: - отдельное спасибо, мне,как раз подобного образца не хватало
aggressor_
05-02-2011, 02:59
Лень тут совершенно ни причём. Безусловно, если я хоть немного понимал во всём этом, я бы не задавал эти вопросы...
Соединив два скрипта (твой и amel27) методом тыка получилось вот это:
Set objShellApp = CreateObject("Shell.Application")
objShellApp.Open("C:\123")
WScript.Sleep 500
result = MsgBox ("Вы действительно хотите удалить папку?", vbYesNo, "Удаление папки.")
Select Case result
Case vbYes
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFldr = "C:\123"
ClearFolder strFldr
Function ClearFolder(sFldr)
On Error Resume Next
Dim oD, cF, cD, oI
Set oD = objFSO.GetFolder(sFldr)
Set cF = oD.Files
Set cD = oD.SubFolders
For Each oI In cF
oI.Attributes = 0
oI.Delete
Next
For Each oI In cD
ClearFolder oI.Path
oI.Attributes = 0
oI.Delete
Next
End Function
WScript.Quit
Case vbNo
WScript.Quit
End Select
И самое удивительное, что работает!
Я рад, что у тебя получилось.Обращайся...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.