CMD/BAT - Поиск с помощью Bat ника

Аватара пользователя
shiroq

CMD/BAT - Поиск с помощью Bat ника

Сообщение shiroq »

Диски есть файлы, с помощью батника надо искать определенной слова в файлах и все файлы содержащий этот слова скопировать на другой каталог!



Благодарю оказавших помощь!
Аватара пользователя
sunnykey

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение sunnykey »

Код:

Код: Выделить всё

#Powershell script.
#Don't forget unlock script executing by 
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
$SourceDir="C:\From\"
$DestDir="C:\To"
#выбрать нужную кодировку файла между ASCII, UTF8, UTF7, UTF32, Unicode, OEM
$Encoding=[Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]::UTF8
gci "$SourceDir\*" -Recurse -Force | % {
    if ((gc $_.FullName -Encoding $Encoding | Select-String -pattern "Какая-то строка") -ne $null) {
        Copy-Item -Path $_.FullName -Destination $DestDir -Recurse -Force
    }
}
Аватара пользователя
shiroq

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение shiroq »

Спасибо за поддержку но мне надо bat ник!

Я организовал поиск проблема с копированием файла...
Аватара пользователя
muqanna

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение muqanna »

Спасибо за поддержку но мне надо bat ник!

Я организовал поиск проблема с копированием файла...
Аватара пользователя
muqanna

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение muqanna »

muqanna,



Код:

Код: Выделить всё

@echo off
setlocal
set "from=C:\Some Folder"
set "to=D:\Some Folder"
set "words=\ \ \"
2>nul md "%to%"
for /f "tokens=1 delims=:" %%i in (' findstr /s "%words%" "%from%\*" ') do call:copy "%%i"
goto:eof
:copy
set "file=%~nx1"
set "cnt=0"
:check
set /a cnt+=1
if not exist "%to%\%file%" (
    copy %1 "%to%\%file%"
) else (
    set "file=%~n1(%cnt%)%~x1"
    goto:check
)

Ищет в папке "C:\Some Folder" и в подпапках

Слова "qwerty", "monday" и "tomorrow"

Копирует с проверкой на имя в "D:\Some Folder"
Аватара пользователя
muqanna

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение muqanna »

Foreigner, Не! пишет что не удалось найти указанного файла... Я смотрел кода
Цитата Foreigner:



"%from%\*"
CMD/BAT - Поиск с помощью Bat ника




ошибка не в этом строке?
Аватара пользователя
muqanna

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение muqanna »

muqanna:


Цитата:



ошибка не в этом строке?



Нет, это ошибка findstr.exe

Выдает пути в 866, в случае если названия файлов или путь к ним содержат кириллицу. Предлагаю вариант с использованием
grep
:



Код:

Код: Выделить всё

@echo off
setlocal
1>nul chcp 1251
set "from=C:\Some Folder"
set "to=D:\Some Folder"
set "words=(Hello|Привет|Goodbye)"
2>nul md "%to%"
for /f "tokens=1 delims=:" %%i in (' grep -RE "%words%" "%from%\*" ') do set "f_%%~si=%%i"
for /f "tokens=2 delims==" %%i in (' set f_ ') do call:copy "%%i" 
goto:eof
:copy
set "fullname=%~1"
set "file=%~nx1"
set "cnt=0"
:check
set /a cnt+=1
if not exist "%to%\%file%" (
    copy "%fullname:/=\%" "%to%\%file%"
) else (
    set "file=%~n1(%cnt%)%~x1"
    goto:check
)
Аватара пользователя
Foreigner

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение Foreigner »

Цитата Foreigner:



Foreigner
CMD/BAT - Поиск с помощью Bat ника




Дал вот такую сообщения!

C:\Temp\1>1

grep: C:\Temp\1\1\*: No such file or directory

Переменная среды f_ не определена



Я с grepам не работал? Дальше что делать?
Аватара пользователя
muqanna

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение muqanna »

Исправил, попробуйте:



Код:

Код: Выделить всё

@echo off
setlocal
1>nul chcp 1251
set "from=C:\Some Folder"
set "to=D:\Some Folder"
set "words=(Hello|Привет|Goodbye)"
2>nul md "%to%"
for /f "tokens=2 delims=:" %%i in (' grep -RE "%words%" "%from%\*" ') do call:set "%%i"
for /f "tokens=2 delims==" %%i in (' set f_ ') do call:copy "%%i" 
goto:eof
:copy
set "fullname=%~1"
set "file=%~nx1"
set "cnt=0"
:check
set /a cnt+=1
if not exist "%to%\%file%" (
    copy "%fullname:/=\%" "%to%\%file%"
) else (
    set "file=%~n1(%cnt%)%~x1"
    goto:check
)
goto:eof
:set
set "s=%~1"
set "s=%s: =_%"
set "f_%s%=%~1"
Аватара пользователя
Foreigner

Re: CMD/BAT - Поиск с помощью Bat ника

Сообщение Foreigner »

Цитата Foreigner:



Foreigner
CMD/BAT - Поиск с помощью Bat ника





Цитата muqanna:



grep: C:\Temp\1\1\*: No such file or directory

Переменная среды f_ не определена
CMD/BAT - Поиск с помощью Bat ника




тот же сообщению выдает!
Ответить

Вернуться в «Скриптовые языки администрирования Windows»