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

zeroua 11-06-2014 11:15 2362814

Подсчет слов и нахождение заданного слова, замена и его замена на другое.
 
Здравствуйте все, а каким образом посчитать и вывести на экран количество появления заданного слова без учета регистра, у меня вроде получилось вот таким вот скриптом, а ещё мне нужно заменить все слова the на другое заданное слово и перезаписать текстовый документ, помогите с этой нетривиальной для меня задачей.

Код:

@echo off

set /a count=0

for /f "usebackq delims=" %%a in ("text.txt") do for %%i in (%%a) do (
if %%i == the set /a count+=1
)

echo count  : %count%

pause


gora 12-06-2014 10:45 2363201

Цитата:

Цитата zeroua
посчитать и вывести на экран количество появления заданного слова без учета регистра, ... а ещё мне нужно заменить все слова the на другое заданное слово и перезаписать текстовый документ »

Подобную задачу решал с помощью vbs скрипта (ибо bat неудобен для подобных задач) в составе SetTools, посмотрите там скрипт, может подойдет.

Georgio 12-06-2014 11:18 2363215

Цитата:

Цитата zeroua
без учета регистра »

Тогда так:
Код:

if /i %%i==the set /a count+=1
.

zeroua 12-06-2014 11:39 2363222

Georgio, угумсь тут я знаю, а вот реализации замены текста средствами командной строки более чем неудобная штука.

Цитата:

Цитата gora
Подобную задачу решал с помощью vbs скрипта (ибо bat неудобен для подобных задач) в составе SetTools, посмотрите там скрипт, может подойдет. »

Спасибо за наводку но хотелось бы конечно справится именно через bat,

Код:

for /f "usebackq delims=" %%a in ("1.txt") do (
set strrr=%%a
set tmpr=%strrr:word=nut%
echo.%tmpr%
)

А если как-то так?

gora 12-06-2014 11:55 2363228

Цитата:

Цитата zeroua
Спасибо за наводку »

Ну тогда я Вам еще уточню задачу: сколько слов the в этой строке?
Цитата:

The then the, nothe the: thethethe the

Georgio 12-06-2014 12:22 2363237

Цитата:

Цитата zeroua
А если как-то так? »


Да не вопрос:

Код:

for /f "usebackq delims=" %%a in ("1.txt") do (
 set strrr=%%a
 call echo %%strrr:word=nut%%>>"2.txt"
 )

.

Только "подводных камней" будет куча. Один "камень" даже "выходит на поверхность моря": регистр учитываться будет. Если текст не секретный, то выложите этот файл в архиве и что на что менять напишите.

zeroua 12-06-2014 12:32 2363239

Georgio, это абстрактная задача текстовый документ не имеет значения, я использовал с таким содержанием.

Код:

zzz the the
aaa aaa aaa
the
the
the
aaa


Georgio 12-06-2014 13:29 2363246

Код:

@echo off& :команда "echo off" обязательна
set "word_1=the"
set "word_2=мама"
(
for /f "usebackq delims=" %%i in ("1.txt") do (
 for %%j in (%%i) do (
  if /i "%%j"=="%word_1%" (
  set /p"=%word_2% "<nul
  ) else (
  set /p"=%%j "<nul
  )
  )
  echo.
 )
)>"2.txt"
exit /b


zeroua 13-06-2014 14:38 2363617

Georgio, все прекрасно но он создает новый файл, а мне по условию задачи лучше что бы он перезаписал тот же файл, можно это реализовать.

Georgio 13-06-2014 15:22 2363632

Код:

@echo off& :команда "echo off" обязательна
set "word_1=the"
set "word_2=мама"
(
for /f "usebackq delims=" %%i in ("1.txt") do (
 for %%j in (%%i) do (
  if /i "%%j"=="%word_1%" (
  set /p"=%word_2% "<nul
  ) else (
  set /p"=%%j "<nul
  )
  )
  echo.
 )
)>"2.txt"
move "2.txt" "1.txt">nul
exit /b



Время: 14:49.

Время: 14:49.
© OSzone.net 2001-