CMD/BAT - [решено] Вывести список слов из текстового файла

Ответить
Аватара пользователя
Cypp0raT

CMD/BAT - [решено] Вывести список слов из текстового файла

Сообщение Cypp0raT »

Требуется написать bat-ник, выводящий список слов из текстового файла с числом их вхождений.

Сам только начинаю пытаться разбираться в этом, но пока все печально. Далеко в решении не ушел.




Цитата:



set mfile=C:\CMDTest\d.txt

set str=""



for /f "tokens=*" %%i in ('type %mfile%') do (

set str=%%i



for /f "tokens=1*" %%j in ("%%i") do (

find /i /c "%%j" "%mfile%"





)

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

Re: CMD/BAT - [решено] Вывести список слов из текстового файла

Сообщение Iska »

Cypp0raT, задача для пакетных файлов, прямо скажем, не тривиальная. Зачем сие нужно?
Аватара пользователя
Cypp0raT

Re: CMD/BAT - [решено] Вывести список слов из текстового файла

Сообщение Cypp0raT »

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

Re: CMD/BAT - [решено] Вывести список слов из текстового файла

Сообщение Iska »

Cypp0raT, облегчать участь проще и надёжнее в рамках WSH или PoSH. Например:



Код:

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

Option Explicit
Dim objDictionary
Dim elem
Set objDictionary = WScript.CreateObject("Scripting.Dictionary")
With WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile("E:\Песочница\0206\0001.txt")
	Do Until .AtEndOfStream
		For Each elem In Split(.ReadLine())
			If Not objDictionary.Exists(elem) Then
				objDictionary.Add elem, 1
			Else
				objDictionary.Item(elem) = objDictionary.Item(elem) + 1
			End If
		Next
	Loop
	.Close
End With
For Each elem In objDictionary.Keys
	WScript.Echo elem, objDictionary.Item(elem)
Next
objDictionary.RemoveAll
Set objDictionary = Nothing
WScript.Quit 0
Аватара пользователя
Cypp0raT

Re: CMD/BAT - [решено] Вывести список слов из текстового файла

Сообщение Cypp0raT »

Iska, само собой через "прямой" язык это сделать легче. Но мне требуется именно на cmd...

Ладно, проблему решил сам. Правда через заднюю мысль, но сойдет.



Тогда такой подвопрос, как мне вывести этот список без повтора одинаковых слов?

dog 8

head 4

dog 8

man 12

woman 4

head 4



Т.е. вывод должен получиться примерно таким:

dog 8

head 4

man 12

woman 4
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Вывести список слов из текстового файла

Сообщение Iska »

Подсказка: если несколько раз написать set Var=Value, переменная останется всё равно одна.



Вам нужно из полученного добиться в итоге примерно такого варианта исполнения:



Код:

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

set sWordsdog=8
set sWordshead=4
set sWordsdog=8
set sWordsman=12
set sWordswoman=4
set sWordshead=4
set sWords

Думайте.
Ответить

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