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

turbolover 26-09-2016 18:18 2672398

Хочу спросить, как сделать так чтобы скрипт в папке удалял все файлы...
 
Хочу спросить,как сделать так чтобы скрипт удалял все файлы в папке, а етого нетрогал: ( FXSAPIDebugLogFile.txt ).

megaloman 26-09-2016 20:39 2672457

Цитата:

Цитата turbolover
Хочу спросить »

- хотите-спрашивайте, в чём затруднение? :) Если на файле и в корне диска нет особых параметров доступа, то
Код:

@Echo Off
Set "MyFile=Z:\Kuku\FXSAPIDebugLogFile.txt"

Call :Clear "%MyFile%"
GoTo :Eof

:Clear
If Exist %1 (
        Move %1 "%~d1\" >nul
        If Exist "%~d1\%~nx1" CD /D "%~dp1" && RD /s /q "%~dp1" 2>nul
        Move "%~d1\%~nx1" %1 >nul 
) Else (
        cls
        Echo File %1 not Exist
        pause
)

Вы должны указать полный путь к Вашему файлу, скрипт переместит его в корень диска, очистит папку, в которой он находился (будут удалены все файлы и подпапки в папке, где находился Ваш файл, невзирая на атрибуты "только для чтения", "системный", "скрытый"), затем вернёт Ваш драгоценный файл назад.
Вариант будет работать медленнее, но указанный файл временно перемещаться не будет
Код:

@Echo Off
Set "MyFile=Z:\Kuku\FXSAPIDebugLogFile.txt"

Call :Clear "%MyFile%"
GoTo :Eof

:Clear
        pushd "%~dp1"
        attrib -r -s -h /S /D
        attrib +r %1
        del /Q "%~dp1*.*" >nul 2>nul
        attrib -r  %1
        FOR /F "usebackq delims=" %%i IN (`Dir /B /A:D %~dp1 2^>nul`) DO Rd /s /q "%~dp1%%i"
        popd

Здесь Ваш драгоценный файл не перемещается, ему устанавливается атрибут "только для чтения", затем все остальные файлы и подпапки удаляются, а у Вашего файла снимается атрибут "только для чтения"
Еще медленнее, но атрибуты драгоценного файла никак не меняются
Код:

@Echo Off
Set "MyFile=Z:\Kuku\FXSAPIDebugLogFile.txt"

Call :Clear "%MyFile%"
GoTo :Eof

:Clear
        FOR /F "usebackq delims=" %%i IN (`Dir /B /A:-D %~dp1 2^>nul`) DO (
                If /I Not %1=="%~dp1%%i" attrib -r -s -h "%~dp1%%i" &DEL "%~dp1%%i"
        )
        FOR /F "usebackq delims=" %%i IN (`Dir /B /A:D %~dp1 2^>nul`) DO attrib -r -s -h "%~dp1%%i" &Rd /s /q "%~dp1%%i"


turbolover 02-10-2016 15:57 2674295

megaloman!
Это не-драгоценный файл, а файл Факсов/печати.
Атрибуты тут не поможет а сам файл всегда занят системой, и перемещать его не получится. Его при удалении других файлов просто надо пропустить, и не трогать.
P.s. Файл обитает здесь: (%Temp%). Его удаляет только програмка: "Unlocker".

megaloman 02-10-2016 23:23 2674398

turbolover, если файл всегда занят системой, то нет смысла писать батник, хватит команды из командной строки.

RD "%Temp%" /S /Q

Но если это папка %Temp%, то наверняка там останутся еще какие-то файлы, занятые системой, и стандартными командами их не удалить.
Даже не подозревал, что этот файл у меня тоже присутствует. И указанная команда его удалить не в состоянии, как я и говорил.


Время: 17:43.

Время: 17:43.
© OSzone.net 2001-