CMD/BAT - txt в csv

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

CMD/BAT - txt в csv

Сообщение porokh »

Здравствуйте!

Есть текстовый файл 190124.txt (имя постоянно будет меняться) содержания 5:4:7:8:4: (будет меняться)

Нужно на выходе получить содержимое файла 5;4;7;8;4; файл должен быть csv (190124.csv)

Как это проще всего реализовать?
Аватара пользователя
porokh

Re: CMD/BAT - txt в csv

Сообщение porokh »

т.е. нужно в файле заменить все ":" на ";" и поменять расширение?
Аватара пользователя
YuS_2

Re: CMD/BAT - txt в csv

Сообщение YuS_2 »

Для такого я обычно использую блокнот. А если файлов много и их лень открывать -
Notepad++
. Ну а переименование файлов это и вовсе банальная штука (мне, конечно, больше нравится TC, но тут уж, конечно на вкус и цвет).
Аватара пользователя
porokh

Re: CMD/BAT - txt в csv

Сообщение porokh »

Это и делается вручную в блокноте. А надо через планировщик автоматически.
Аватара пользователя
porokh

Re: CMD/BAT - txt в csv

Сообщение porokh »

Для такого я обычно использую блокнот. А если файлов много и их лень открывать -
Notepad++
. Ну а переименование файлов это и вовсе банальная штука (мне, конечно, больше нравится TC, но тут уж, конечно на вкус и цвет).
Аватара пользователя
porokh

Re: CMD/BAT - txt в csv

Сообщение porokh »

Это и делается вручную в блокноте. А надо через планировщик автоматически.
Аватара пользователя
porokh

Re: CMD/BAT - txt в csv

Сообщение porokh »

porokh, на WSH:



Скрытый текст

[spoiler]Код:
[/spoiler]

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

Option Explicit
Dim strSourceFile
Dim objFSO
Dim strContent
If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0)
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	If objFSO.FileExists(strSourceFile) Then
		With objFSO.OpenTextFile(strSourceFile)
			strContent = .ReadAll()
			.Close
		End With
		With objFSO.CreateTextFile(objFSO.GetBaseName(strSourceFile) & ".csv", True)
			.Write Replace(strContent, ":", ";")
			.Close
		End With
	Else
		WScript.Echo "Can't find source file [" & strSourceFile & "]."
		WScript.Quit 2
	End If
	Set objFSO = Nothing
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ "
	WScript.Quit 1
End If
WScript.Quit 0







Путь к исходному файлу указывается аргументом скрипта (также можно просто перетащить исходный файл на скрипт/ярлык на скрипт в Проводнике). Существующий csv-файл, одноимённый исходному, будет молча перезаписан.



P.S. Если размер Вашего исходного файла составляет более четверти размера физической оперативной памяти — пишите, сменим алгоритм на более щадяший к расходам оперативной памяти.
Аватара пользователя
sov44

Re: CMD/BAT - txt в csv

Сообщение sov44 »

porokh,


Вот еще вариант

[spoiler]Код:
[/spoiler]

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

@Echo Off
	Set "File=Z:\Soft_In\*.txt"
	Set "BoxOut=Z:\Soft_Out"
	Set "BoxArc=Z:\Soft_In\Arc"
	Set "ExtOut=csv"
	Set "Sym1=:"
	Set "Sym2=;"
	If Not Exist "%BoxArc%" Md "%BoxArc%"
	FOR %%f IN ("%File%") DO (
		>"%BoxOut%\%%~nf.%ExtOut%" (FOR /F "usebackq delims=" %%s IN (`2^>nul more "%%f"`) DO (
		Set "SS=%%s" 
		Call Echo %%SS:%Sym1%=%Sym2%%%
		))
		>nul Move /Y "%%f" "%BoxArc%\"
	)





Во входной папке обрабатываются файлы по маске, заменяются указанные символы, файлы сохраняются в указанной выходной папке по заданному расширению, исходные файлы перемещаются в архив, чтобы больше их не обрабатывать при последующем запуске батника, так как Вам надо
Цитата porokh:



через планировщик автоматически.
CMD/BAT - txt в csv




ИМХО, Вы изложили только часть задачи. Что дальше происходит с CSV-файлами?
Ответить

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