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

evilfelix 19-09-2010 00:04 1498814

поиск файла по маске
 
Требуется маска которая выбирает файлы содержащие в своём имени не менее 3х цифр

@echo off
for /r C:\temp\11\ %%i in ("маска") do (
copy %%~fi %1%
)

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

evilfelix 19-09-2010 01:06 1498839

или невозможно такую маску подобрать?

kiripanda 19-09-2010 01:21 1498842

Объясняй подробнее, что нужно найти/отсеять , или изучай справку команды FINDSTR

evilfelix 19-09-2010 01:29 1498847

нужно скопировать файлы в имени которых содержится более 4-х цифр например:
rrr3r2g4g5.txt 4 цифры нужен
er3r3r4ttt.txt 3 цифры не нужен

а конкретней хотелось бы выяснить как выглядит маска таких файлов в виде типа "*asd*.*"

или другой вариант .bat (всмысле не по маске) который файлы скопирует по "заданным выше требованиям" допустим со всего диска D:\ в C:\temp\

kiripanda 19-09-2010 06:57 1498875

Вот видишь, есть проблемы с пониманием, что такое "не менее" и "более"
Код:

@echo off

for /f "delims=" %%f in ('dir /b/a-d/s D:\') do (
echo %%~nf | findstr /r /c:[0-9].*[0-9].*[0-9].*[0-9] && copy /b "%%f" "C:\temp"
)

Не тестировал. Можно улучшить.

amel27 19-09-2010 08:44 1498900

Код:

@echo off

set $S=d:\*
set $D=c:\TEMP

set "$R=[0-9][^0-9\\]*[0-9][^0-9\\]*[0-9][^0-9\\]*[0-9][^\\]*\.[^\\\.]*$"
for /f "delims=" %%i in ('dir /b/s/a-d "%$S%"^|findstr /rc:"%$R%"') do echo copy /y "%%i" "%$D%"

P.S. в данном варианте файлы без расширения игнорируются

Daemonstar 23-09-2010 00:10 1502122

Не могли бы подсказать регексп для файла начинающегося с "F" далие только цифры, файл без розширения?

amel27 23-09-2010 03:39 1502190

Цитата:

Цитата Daemonstar
для файла начинающегося с "F" далие только цифры, файл без розширения »

Код:

@echo off
set $D=c:\TEMP\*

:: для полного пути

set $R="\\F[0-9][0-9]*$"
dir /b/s/a-d "%$D%"|findstr /irc:%$R%

:: только для имени

set $R="^F[0-9][0-9]*$"
dir /b/a-d "%$D%"|findstr /irc:%$R%


Daemonstar 23-09-2010 10:51 1502337

Спасибо, выручили!

Daemonstar 23-09-2010 13:13 1502449

Не могу понять, почему то не работает
Код:

@ECHO ONN

rem *****************************************************
rem скрипт перемещения файлов в папку с текущей датой
rem *****************************************************



set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%

set SDIR=d:\2
set DDIR=d:\1
set rar=D:\Installing\Rar.exe
set $R="\\F[0-9][0-9]*$"


d:
cd %SDIR%
MD %DDIR%\%dd%%mm%%yyyy%

for /f "delims=" %%i in ('dir /b/a-d "%SDIR%"|findstr /irc:"%$R%"') do echo copy /y "%%i" "%DDIR%\%dd%%mm%%yyyy%" > %SDIR%\err.txt

echo.
pause

и отладить не могу , консоль сразу закрывается , хот и использую pause (

kiripanda 23-09-2010 13:17 1502452

Как минимум, нужно экранировать ^|
Посмотри как в 6-м посте.

amel27 23-09-2010 16:26 1502635

Код:

@echo off

set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%

set SDIR=d:\2
set DDIR=d:\1\%dd%%mm%%yyyy%
set $R="^F[0-9][0-9]*$"

if not exist "%DDIR%" md "%DDIR%"

for /f "delims=" %%i in (
'dir /b/a-d "%SDIR%\*"^|findstr /irc:%$R%'
) do copy /y "%SDIR%\%%i" "%DDIR%\" >"%~dpn0.log" 2>"%~dpn0.err"



Время: 21:50.

Время: 21:50.
© OSzone.net 2001-