CMD/BAT - Поиск с помощью Bat ника
-
shiroq
CMD/BAT - Поиск с помощью Bat ника
Диски есть файлы, с помощью батника надо искать определенной слова в файлах и все файлы содержащий этот слова скопировать на другой каталог!
Благодарю оказавших помощь!
Благодарю оказавших помощь!
-
sunnykey
Re: CMD/BAT - Поиск с помощью Bat ника
Код:
Код: Выделить всё
#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 ника
Спасибо за поддержку но мне надо bat ник!
Я организовал поиск проблема с копированием файла...
Я организовал поиск проблема с копированием файла...
-
muqanna
Re: CMD/BAT - Поиск с помощью Bat ника
Спасибо за поддержку но мне надо bat ник!
Я организовал поиск проблема с копированием файла...
Я организовал поиск проблема с копированием файла...
-
muqanna
Re: CMD/BAT - Поиск с помощью Bat ника
muqanna,
Код:
Ищет в папке "C:\Some Folder" и в подпапках
Слова "qwerty", "monday" и "tomorrow"
Копирует с проверкой на имя в "D:\Some Folder"
Код:
Код: Выделить всё
@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 ника
Foreigner, Не! пишет что не удалось найти указанного файла... Я смотрел кода
Цитата Foreigner:
"%from%\*"
ошибка не в этом строке?
Цитата Foreigner:
"%from%\*"
CMD/BAT - Поиск с помощью Bat ника
ошибка не в этом строке?
-
muqanna
Re: CMD/BAT - Поиск с помощью Bat ника
muqanna:
Цитата:
ошибка не в этом строке?
Нет, это ошибка findstr.exe
Выдает пути в 866, в случае если названия файлов или путь к ним содержат кириллицу. Предлагаю вариант с использованием
Код:
Цитата:
ошибка не в этом строке?
Нет, это ошибка 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
Дал вот такую сообщения!
C:\Temp\1>1
grep: C:\Temp\1\1\*: No such file or directory
Переменная среды f_ не определена
Я с grepам не работал? Дальше что делать?
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 ника
Исправил, попробуйте:
Код:
Код:
Код: Выделить всё
@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
Цитата muqanna:
grep: C:\Temp\1\1\*: No such file or directory
Переменная среды f_ не определена
тот же сообщению выдает!
Foreigner
CMD/BAT - Поиск с помощью Bat ника
Цитата muqanna:
grep: C:\Temp\1\1\*: No such file or directory
Переменная среды f_ не определена
CMD/BAT - Поиск с помощью Bat ника
тот же сообщению выдает!