<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8741&amp;type=atom" />
	<updated>2013-10-09T21:12:01Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8741</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75903#p75903" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2013-10-09T21:12:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75903#p75903</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75839#p75839" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[xsanekk]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27386</uri>
			</author>
			<updated>2013-10-08T07:45:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75839#p75839</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75836#p75836" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-10-08T02:00:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75836#p75836</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75835#p75835" />
			<content type="html"><![CDATA[<p>Думаю может следует DIR сначала выбрать все файлы 20130901 02 и т.д. потом сменить атрибут attrib например на только для чтения, после выполнить удаление по атрибутам кроме для чтения, а потом выполнить опять в нормальный атрибут? Кто нибудь подскажет...</p>]]></content>
			<author>
				<name><![CDATA[xsanekk]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27386</uri>
			</author>
			<updated>2013-10-07T19:41:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75835#p75835</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75833#p75833" />
			<content type="html"><![CDATA[<p><span style="color: green"><strong>xsanekk</strong>, оформите код!</span></p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2013-10-07T15:40:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75833#p75833</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Удаление всех файлов, кроме указанных в переменной]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75829#p75829" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[xsanekk]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27386</uri>
			</author>
			<updated>2013-10-07T10:38:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75829#p75829</id>
		</entry>
</feed>
