Показать полную графическую версию : Поиск с помощью Bat ника
Диски есть файлы, с помощью батника надо искать определенной слова в файлах и все файлы содержащий этот слова скопировать на другой каталог!
Благодарю оказавших помощь!
sunnykey
28-09-2013, 15:04
#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
}
}
Спасибо за поддержку но мне надо bat ник!
Я организовал поиск проблема с копированием файла...
Foreigner
30-09-2013, 09:31
muqanna,
@echo off
setlocal
set "from=C:\Some Folder"
set "to=D:\Some Folder"
set "words=\<qwerty\> \<monday\> \<tomorrow\>"
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"
Foreigner, Спасибо щя проверим!
Foreigner, Не! пишет что не удалось найти указанного файла... Я смотрел кода "%from%\*" » ошибка не в этом строке?
Foreigner
30-09-2013, 12:03
muqanna:
ошибка не в этом строке?
Нет, это ошибка findstr.exe
Выдает пути в 866, в случае если названия файлов или путь к ним содержат кириллицу. Предлагаю вариант с использованием grep (http://gnuwin32.sourceforge.net/packages/grep.htm):
@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 »
Дал вот такую сообщения!
C:\Temp\1>1
grep: C:\Temp\1\1\*: No such file or directory
Переменная среды f_ не определена
Я с grepам не работал? Дальше что делать?
Foreigner
30-09-2013, 18:10
Исправил, попробуйте:
@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 »grep: C:\Temp\1\1\*: No such file or directory
Переменная среды f_ не определена »
тот же сообщению выдает!
Я с grepам не работал? Дальше что делать?»
Цитата Foreigner: »
Я изменил код, он работает, но тут два проблемы,
Это:
1) Сетевого диска не правильно видеть! На компе D:\test без проблем работает, указываю сетевой диск, он его принимает без буквы на пример x:\test, а он принимает его как \test!
2) Цикл выполняется не полностью, допустим там 5 файла, а он находит в 4-х и копирует 4 файла!(из 600 файлов он пропустил 7 файлов!)
--------------------------
@echo on
setlocal
set "from=d:\Temp\1"
set "to=d:\Temp\2"
set "words=test"
2>nul md "%to%"
for /f "tokens=2* 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
)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.