Показать полную графическую версию : [решено] Удалить две папки вместе с cmd/bat
Dodakaedr
11-06-2014, 17:31
Здравствуйте, подскажите код который бы удалял полностью папку со всем содержимым в которой находится сам cmd/bat и папку (тоже со всем содержимым) по пути C:\Users\Администратор\AppData\Roaming\Новая папка...Спасибо!!!
rd /q /s "%~dp0"
rd /q /s "C:\Users\Администратор\AppData\Roaming\Новая папка"
Dodakaedr
11-06-2014, 18:02
Iska, немножко не то, этот код удаляет все содержимое папки в которой находится cmd файлик, но саму папку не удаляет, и C:\Users\Администратор\AppData\Roaming\Новая папка тоже не удаляет...
но саму папку не удаляет »
Удаляет. Просто научитесь исполнять пакетные файлы, не делая искомую папку текущей. Либо ищите иной процесс, блокирующий папку.
Если "Администратор" -- это Вы, то можно так:
@echo off
chcp 1251>nul
rd /q /s "%APPDATA%\Новая папка"
cd ..
rd /q /s "%~dp0"
.
Dodakaedr
11-06-2014, 21:26
Удаляет. Просто научитесь исполнять пакетные файлы, не делая искомую папку текущей. Либо ищите иной процесс, блокирующий папку. »
Объясняю ситуацию: делаю репак программы и имеется портативная версия программы от производителя, но свои настройки сохраняет в C:\Users\Администратор\AppData\Roaming\Новая папка, додумался создать cmd или bat с названием Uninstall чтобы удалял папку с настройками и саму папку где находится этот самый cmd/bat-ник, типа деинсталлятор....
Georgio, уже лучше, уже удаляет C:\Users\Администратор\AppData\Roaming\Новая папка, ну а как саму папку удалить в которой находился батник?
Если "Администратор" -- это Вы, то можно так: »
а можно как-то через проверку текущего пользователя...
ну а как саму папку удалить в которой находился батник? »
У меня срабатывает полностью. Может Вам попробовать так (с учетом: через проверку текущего пользователя... »):
@echo off
chcp 1251>nul
if "%USERNAME%"=="Администратор" (
rd /q /s "%APPDATA%\Новая папка"
)
for /f "delims=" %%i in ('
dir /a /b 2^>nul^| findstr /lvc:"%~nx0"
') do (
rd /q /s "%%i" 2>nul|| del /a /f /q "%%i" 2>nul
)
cd ..
rd /q /s "%~dp0"
.
Dodakaedr
11-06-2014, 22:15
То что надо....но меня интересует что если пользователь не Администратор, то что будет? Эта часть кода что означает? )
for /f "delims=" %%i in ('
dir /a /b 2^>nul^| findstr /lvc:"%~nx0"
') do (
rd /q /s "%%i" 2>nul|| del /a /f /q "%%i" 2>nul
)
Эта часть кода что означает? »
Удаление всего содержимого папки, кроме самого пакетного файла.
что если пользователь не Администратор, то что будет? »
Вот так ничего не будет:
@echo off
chcp 1251>nul
if "%USERNAME%"=="Администратор" (
rd /q /s "%APPDATA%\Новая папка"
for /f "delims=" %%i in ('
dir /a /b 2^>nul^| findstr /lvc:"%~nx0"
') do (
rd /q /s "%%i" 2>nul|| del /a /f /q "%%i" 2>nul
)
cd ..
rd /q /s "%~dp0"
)
exit /b
.
Dodakaedr
11-06-2014, 22:30
Вот так ничего не будет: »
То есть не сработает удаление?
То есть не сработает удаление? »
Абсолютно верно. Ничто удалено не будет, и пакетный файл завершит работу.
Dodakaedr
11-06-2014, 22:41
Абсолютно верно. Ничто удалено не будет, и пакетный файл завершит работу. »
Тогда не подходит, нужно чтобы как-то универсальный батник был, чтобы на любом другом компьютере при любом пользователе работал....
нужно чтобы как-то универсальный батник был »
Вам тогда не нужна проверка имени пользователя. Просто используйте переменную "APPDATA" (это и есть "C:\Users\%USERNAME%\AppData\Roaming" для Windows Vista и выше, а для Windows XP -- "C:\Documents and Settings\%USERNAME%\Application Data"):
@echo off
chcp 1251>nul
rd /q /s "%APPDATA%\Новая папка"
for /f "delims=" %%i in ('
dir /a /b 2^>nul^| findstr /lvc:"%~nx0"
') do (
rd /q /s "%%i" 2>nul|| del /a /f /q "%%i" 2>nul
)
cd ..
rd /q /s "%~dp0"
.
Dodakaedr
11-06-2014, 23:06
Georgio, Теперь оно самое:) Спасибо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC