<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=8741</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8741&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Удаление всех файлов, кроме указанных в переменной».]]></description>
		<lastBuildDate>Wed, 09 Oct 2013 21:12:01 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=75903#p75903</link>
			<description><![CDATA[<p>Можно было бы использовать FINDSTR с ключом /V для отсеивания из вывода команды DIR строк, удовлетворяющих образцу:<br /></p><div class="codebox"><pre><code>set FILEMASK=*.*
set FILEPATH=F:\AVT\PRJ\
::set FILENOTDELETE=201309??.???
set FILENOTDELETE=&quot;\\201309[^:\\][^:\\]\.[^:\\\.][^:\\\.][^:\\\.]$&quot;

for /f &quot;delims=&quot; %%i in (&#039;dir /b /s &quot;%FILEPATH%\%FILEMASK%&quot; ^| findstr /i /v %FILENOTDELETE%&#039;) do del /f /q &quot;%%i&quot;
</code></pre></div><p>Возможно, регулярное выражение можно было бы упростить или улучшить иным образом.<br />На самом деле это не совсем то, т.к. «?» соответствует нулю или одному символу, а в предложенном решении будут учитыватся ровно два символа на конце имени файла и расширение из трёх символов. Так что мне самому интересно, как бы это можно было улучшить.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Wed, 09 Oct 2013 21:12:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=75903#p75903</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=75839#p75839</link>
			<description><![CDATA[<p>Спасибо за ответ! Решил вот таким образом...</p><div class="codebox"><pre><code>
set FILEMASK=201309??.???
set FILEPATH=F:\AVT\PRJ\
for /f %%i in (&#039;dir /b /s &quot;%FILEPATH%\%FILEMASK%&quot;&#039;) do attrib +r %%i
del /f /q /s /a:-r %FILEPATH%
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (xsanekk)]]></author>
			<pubDate>Tue, 08 Oct 2013 07:45:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=75839#p75839</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=75836#p75836</link>
			<description><![CDATA[<p><strong>xsanekk</strong>, используйте PowerShell:<br /></p><div class="codebox"><pre><code>Get-ChildItem -Path &quot;E:\Песочница\0323\0001&quot; -Include &quot;????????.prj&quot; -Exclude &quot;201309??.prj&quot; -Recurse |`
    ForEach-Object -Process {
        Remove-Item $_ -WhatIf
    }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 08 Oct 2013 02:00:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=75836#p75836</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=75835#p75835</link>
			<description><![CDATA[<p>Думаю может следует DIR сначала выбрать все файлы 20130901 02 и т.д. потом сменить атрибут attrib например на только для чтения, после выполнить удаление по атрибутам кроме для чтения, а потом выполнить опять в нормальный атрибут? Кто нибудь подскажет...</p>]]></description>
			<author><![CDATA[null@example.com (xsanekk)]]></author>
			<pubDate>Mon, 07 Oct 2013 19:41:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=75835#p75835</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=75833#p75833</link>
			<description><![CDATA[<p><span style="color: green"><strong>xsanekk</strong>, оформите код!</span></p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Mon, 07 Oct 2013 15:40:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=75833#p75833</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=75829#p75829</link>
			<description><![CDATA[<p>Добрый день! Подскажите как можно решить такую задачку: Есть Папка в ней много подпапок, в каждой папке есть куча файликов вида ГГГГММДД.PRJ, где ГГГГ-год ММ-месяц, ДД-день. Необходимо удалить в папках все файлы кроме заданного в переменной FILENOTDELETE. То есть например нужен оставить сентябрь то маска должна быть 201309??.PRJ&nbsp; Нашел скрипт, попытался обработать но не получается, в условии не понимает ?? не *, то есть маску не понимает. Как быть? как задать что бы остались только те файлы которые указаны а остальные удалить.</p><div class="codebox"><pre><code>@Echo On
setlocal enabledelayedexpansion
set FILEMASK=*.*
set FILEPATH=F:\AVT\PRJ\
set FILENOTDELETE=201309??.???

for /f %%i in (&#039;dir /b /s &quot;%FILEPATH%\%FILEMASK%&quot;&#039;) do if /i not %%i==%%~dpi%FILENOTDELETE% del /f /q &quot;%%i&quot;
pause
exit</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (xsanekk)]]></author>
			<pubDate>Mon, 07 Oct 2013 10:38:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=75829#p75829</guid>
		</item>
	</channel>
</rss>
