Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удалить две папки вместе с cmd/bat (http://forum.oszone.net/showthread.php?t=283503)

Dodakaedr 11-06-2014 17:31 2362932

Удалить две папки вместе с cmd/bat
 
Здравствуйте, подскажите код который бы удалял полностью папку со всем содержимым в которой находится сам cmd/bat и папку (тоже со всем содержимым) по пути C:\Users\Администратор\AppData\Roaming\Новая папка...Спасибо!!!

Iska 11-06-2014 17:52 2362941

Код:

rd /q /s "%~dp0"
rd /q /s "C:\Users\Администратор\AppData\Roaming\Новая папка"


Dodakaedr 11-06-2014 18:02 2362947

Iska, немножко не то, этот код удаляет все содержимое папки в которой находится cmd файлик, но саму папку не удаляет, и C:\Users\Администратор\AppData\Roaming\Новая папка тоже не удаляет...

Iska 11-06-2014 18:39 2362959

Цитата:

Цитата Dodakaedr
но саму папку не удаляет »

Удаляет. Просто научитесь исполнять пакетные файлы, не делая искомую папку текущей. Либо ищите иной процесс, блокирующий папку.

Georgio 11-06-2014 21:24 2363006

Если "Администратор" -- это Вы, то можно так:

Код:

@echo off
chcp 1251>nul
rd /q /s "%APPDATA%\Новая папка"
cd ..
rd /q /s "%~dp0"

.

Dodakaedr 11-06-2014 21:26 2363009

Цитата:

Цитата Iska
Удаляет. Просто научитесь исполнять пакетные файлы, не делая искомую папку текущей. Либо ищите иной процесс, блокирующий папку. »

Объясняю ситуацию: делаю репак программы и имеется портативная версия программы от производителя, но свои настройки сохраняет в C:\Users\Администратор\AppData\Roaming\Новая папка, додумался создать cmd или bat с названием Uninstall чтобы удалял папку с настройками и саму папку где находится этот самый cmd/bat-ник, типа деинсталлятор....

Georgio, уже лучше, уже удаляет C:\Users\Администратор\AppData\Roaming\Новая папка, ну а как саму папку удалить в которой находился батник?

Цитата:

Цитата Georgio
Если "Администратор" -- это Вы, то можно так: »

а можно как-то через проверку текущего пользователя...

Georgio 11-06-2014 22:09 2363028

Цитата:

Цитата Dodakaedr
ну а как саму папку удалить в которой находился батник? »


У меня срабатывает полностью. Может Вам попробовать так (с учетом:
Цитата:

Цитата Dodakaedr
через проверку текущего пользователя... »

):

Код:

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

То что надо....но меня интересует что если пользователь не Администратор, то что будет? Эта часть кода что означает?
Код:

)
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
 )


Georgio 11-06-2014 22:29 2363045

Цитата:

Цитата Dodakaedr
Эта часть кода что означает? »


Удаление всего содержимого папки, кроме самого пакетного файла.



Цитата:

Цитата Dodakaedr
что если пользователь не Администратор, то что будет? »


Вот так ничего не будет:

Код:

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

Цитата:

Цитата Georgio
Вот так ничего не будет: »

То есть не сработает удаление?

Georgio 11-06-2014 22:35 2363055

Цитата:

Цитата Dodakaedr
То есть не сработает удаление? »

Абсолютно верно. Ничто удалено не будет, и пакетный файл завершит работу.

Dodakaedr 11-06-2014 22:41 2363061

Цитата:

Цитата Georgio
Абсолютно верно. Ничто удалено не будет, и пакетный файл завершит работу. »

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

Georgio 11-06-2014 23:01 2363073

Цитата:

Цитата Dodakaedr
нужно чтобы как-то универсальный батник был »


Вам тогда не нужна проверка имени пользователя. Просто используйте переменную "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 2363074

Georgio, Теперь оно самое:) Спасибо!


Время: 07:41.

Время: 07:41.
© OSzone.net 2001-