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

AlexsandrVl 06-09-2011 13:24 1747295

Нужна помощь удаление файлов
 
Доброго дня

Необходимо удалить все файлы в следующей директории
%UserProfile%\Application Data\1Cv82\
при этом нужно удалить все (файлы и каталоги внутри её) кроме файла 1cv8conn.pfl

заранее спасибо

Busla 06-09-2011 15:01 1747362

В чём проблемы? Например, перемещаете 1cv8conn.pfl во временную папку, удаляете всё, возвращаете нужный файл обратно.

SendMessage 06-09-2011 16:04 1747406

Код:

@echo off

set "SDir=%UserProfile%\Application Data\1Cv82"
set "fn=1cv8conn.pfl"

pushd "%SDir%" && (
  for /f "delims=" %%a in ('dir "%fn%" /b/s/a-d') do move "%%a" "%temp%"
  rd "%SDir%" /s/q 2>nul
  move "%temp%\%fn%" "%SDir%"
  popd
)

Если файл 1cv8conn.pfl просто лежит в корне папки и его не нужно искать, то замените строчку
Код:

for /f "delims=" %%a in ('dir "%fn%" /b/s/a-d') do move "%%a" "%temp%"
на строчку
Код:

move "%SDir%\%fn%" "%temp%"

AlexsandrVl 06-09-2011 18:17 1747501

Большое спасибо ... сделал

sov44 07-11-2011 11:01 1790206

Подскажите, как очистить папку TEMP за исключением нескольких файлов: kls1EE8.tmp, Perflib_Perfdata_830.dat.
С одним файлом понятно (на примере ECHO), не понятно с множеством файлов и папок, которые нужно исключить из обработки.
Код:

@Echo Off
SetLocal enabledelayedexpansion

Set DirProg=%WinDir%\TEMP
For /f %%I In ('dir/b/od "%DirProg%"') Do (
          if not "%%~nxI"=="kls1EE8.tmp" (
                Echo %%~nxI
        )
)
pause

Вроде сделал, работает, но самому не нравится. Есть иные варианты?
Код:

@Echo Off
SetLocal enabledelayedexpansion

Set DirProg=%WinDir%\TEMP
For /f %%I In ('dir/b/od "%DirProg%"') Do (
          if not "%%~nxI"=="kls1EE8.tmp" (
          if not "%%~nxI"=="kls1444444EE8.tmp" (
          if not "%%~nxI"=="VBE" (
                Echo %%~nxI
        )))
)
pause


sov44 17-11-2011 19:11 1797401

При открытом документе Word очищаю содержимое папки Content.Word. Естественно, появляется ошибка удаления. Пытаюсь "выловить" сообщение в командной строке, и в случае его наличия вывести сообщение.
Код:

@Echo Off
SetLocal enabledelayedexpansion

set "dr=%USERPROFILE%\Local Settings\Temporary Internet Files\Content.Word"& call :Calc "%dr%" *

pause

:Calc
for /f "delims=*" %%i in ('dir /b/a-d "%dr%\*.%2" 2^>nul') do (
for %%a in ("%dr%\%%i") do (
         
del /f/q %%a ||(
        findstr.exe /r /c:"Процесс не может получить доступ к файлу, так как этот файл занят другим процессом." && (
                echo msgbox "Закройте файл!">"%temp%\msg.vbs"
            %temp%\msg.vbs
          del %temp%\msg.vbs
                        ))
))
exit /b 0

подскажите, как поправить скрипт?
***
Upd: решил немного по-другому
Код:

@Echo Off
SetLocal enabledelayedexpansion
 
set "dr=%USERPROFILE%\Local Settings\Temporary Internet Files\Content.Word"& call :Calc "%dr%" *
 pause
 
:Calc
for /f "delims=*" %%i in ('dir /b/a-d "%dr%\*.%2" 2^>nul') do (
set "bg=%%i"
if "!bg:~0,1!"=="~" (
        echo msgbox "Закройте документ Word!">"%temp%\msg.vbs"
        %temp%\msg.vbs
        del %temp%\msg.vbs
        Goto :Calc
) else (
for %%a in ("%dr%\%%i") do (
del /f/q %%a
)))


yaguaredo 04-12-2011 12:45 1808981

rebyat pomagite pojalusto

nujno udalit yarlik kankretni amoren.lnk iz desktopa vsex userov

sov44 08-12-2011 08:54 1811448

Подскажите, как удалить файл, если в его имени присутствует спецсимвол
Конкретно: необходимо удалить из директории все файлы *.lnk, в том числе и файл !хлам.lnk
Теоретически, кроме знака восклицания может быть любой символ.
При таком варианте "проглатывается" знак восклицания и файл не удаляется.
Код:

@echo off
SetLocal enabledelayedexpansion

set "dr=%USERPROFILE%\Recent"

for /f "delims=*" %%i in ('dir /b/a-d "%dr%\*.lnk" 2^>nul') do (
set "bg=%%i"
for %%a in ("%dr%\!bg!" ) do (
        echo %%a       
        del /f/q %%a 2>nul
    )
)
pause


sov44 09-12-2011 07:10 1811965

В поиске решения! Нужна подсказка!

kiripanda 09-12-2011 17:50 1812278

Код:

@echo off
setlocal

set "dr=%USERPROFILE%\Recent"

for /f "delims=" %%i in ('dir /b/a-d "%dr%\*.lnk" 2^>nul') do (
        echo "%dr%\%%i"
        del /f/q "%dr%\%%i" 2>nul
)

или

Код:

set "dr=%USERPROFILE%\Recent"

dir /b/a-d/s "%dr%\*.lnk"
del /f/q "%dr%\*.lnk"


sov44 10-12-2011 19:38 1812805

kiripanda, отлично! Как бы ещё прикрутить определение размера файлов, в том числе для файлов с "!" в начале имени?

kiripanda 10-12-2011 20:17 1812829

Код:

set "dr=%USERPROFILE%\Recent"

pushd "%dr%"
for /f "delims=" %%i in ('dir /b/a-d "%dr%\*.lnk" 2^>nul') do (
        echo "%dr%\%%i" [%%~zi Bytes]
        del /f/q "%dr%\%%i" 2>nul
)
popd


sov44 10-12-2011 21:17 1812860

kiripanda, благодарю за решение. :up


Время: 03:12.

Время: 03:12.
© OSzone.net 2001-