AlexsandrVl |
06-09-2011 13:24 1747295 |
Нужна помощь удаление файлов
Доброго дня
Необходимо удалить все файлы в следующей директории
%UserProfile%\Application Data\1Cv82\
при этом нужно удалить все (файлы и каталоги внутри её) кроме файла 1cv8conn.pfl
заранее спасибо
|
В чём проблемы? Например, перемещаете 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 |
Большое спасибо ... сделал
|
Подскажите, как очистить папку 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
|
При открытом документе 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
)))
|
rebyat pomagite pojalusto
nujno udalit yarlik kankretni amoren.lnk iz desktopa vsex userov
|
Подскажите, как удалить файл, если в его имени присутствует спецсимвол
Конкретно: необходимо удалить из директории все файлы *.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
|
В поиске решения! Нужна подсказка!
|
Код:
@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"
|
kiripanda, отлично! Как бы ещё прикрутить определение размера файлов, в том числе для файлов с "!" в начале имени?
|
Код:
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
|
kiripanda, благодарю за решение. :up
|
Время: 03:12.
© OSzone.net 2001-