webForumDet fria alternativet

BAT fil som byter ut tecken i textfil

Windows

11 svar · 859 visningar · startad av Calippo

Medlem sedan aug. 2002536 inlägg
Frågan#1

Kan man göra en bat fil som kopierar en *.txt och döper om den till *.bak och sedan byter ut alla åäö till a och o i *.txt filen?

Hur i såfall?

Medlem sedan mars 2004485 inlägg
#2

Hur man gör det med en bat-fil vet jag inte, men det är inte alls svårt med en hex-editor, ofta kan man även skriva script som gör att man inte behöver göra så mycket.

Se t.ex.: http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm

Medlem sedan aug. 2002536 inlägg
#3

Kopiera filen har jag löst med: copy *.txt *.bak

Medlem sedan feb. 200112 078 inlägg
#4

Om det nu inte måste vara en .bat-fil.

dostuff.vbs:

set fso = createobject("scripting.filesystemobject")
fso.copyfile "c:\file.txt", "c:\file.bak", true

set stream = fso.opentextfile("c:\file.txt", 2)
data = stream.readall()
   'gör din replace här, lämpligen med regexp
stream.write data
set stream = nothing

set fso = nothing
Medlem sedan aug. 2002536 inlägg
#5

Kan inte regexp.... kan du skriva hur man gör det?

Medlem sedan feb. 200112 078 inlägg
#6

Calippo skrev:

Kan inte regexp.... kan du skriva hur man gör det?

Problemet är att jag suger kapitalt på Regular expressions själv, men vi gör ett försök;

set fso = createobject("scripting.filesystemobject")
fso.copyfile "c:\file.txt", "c:\file.bak", true

set stream = fso.opentextfile("c:\file.txt", 2)
data = stream.readall()

set regex = new RegExp
regex.global = true
regex.ignorecase = false

regex.pattern = "[ÅÄ]"
data = regex.replace(data, "A")
regex.pattern = "[Ö]"
data = regex.replace(data, "O")
regex.pattern = "[åä]"
data = regex.replace(data, "a")
regex.pattern = "[ö]"
data = regex.replace(data, "o")

set regex = nothing

stream.write data
set stream = nothing

set fso = nothing
Medlem sedan aug. 2002536 inlägg
#7

Får felmeddelandet:

Rad: 5
Tecken: 1
Fel: Felaktigt filåtkomstläge

Medlem sedan aug. 2002536 inlägg
#8

Hur ska man göra för att man ska slippa skriva "c:\file.txt"?

Jag vill att den tar första och bästa txt fil i samma mapp som vbs filen ligger i bara...

Medlem sedan feb. 200112 078 inlägg
#9

Jag förutsatte att man kunde läsa från filen i write-mode, men tji fick jag. Vi gör såhär istället, det ska fungera.

Angående sökvägen, så är det bara att skriva filnamnet, och ingen fysisk sökväg, så ordnar den det själv.

set fso = createobject("scripting.filesystemobject")
fso.copyfile "file.txt", "file.bak", true

set stream = fso.opentextfile("file.txt", 1)
data = stream.readall()
set stream = Nothing

set regex = new RegExp
regex.global = true
regex.ignorecase = false

regex.pattern = "[ÅÄ]"
data = regex.replace(data, "A")
regex.pattern = "[Ö]"
data = regex.replace(data, "O")
regex.pattern = "[åä]"
data = regex.replace(data, "a")
regex.pattern = "[ö]"
data = regex.replace(data, "o")

set regex = nothing

set stream = fso.opentextfile("file.txt", 2)
stream.write data
set stream = nothing

set fso = nothing
Medlem sedan aug. 2002536 inlägg
#10

Fungerade bra, fast jag vill ändå att den letar rätt på txt filen i samma mapp själv eftersom de kan hete olika från gång till gång.

Medlem sedan aug. 2002536 inlägg
#11

r = inputbox("Ange filnamnet på textfilen du vill byta ut tecken på!", "Filnamn?", "")
fso.copyfile r, r & ".bak", true

Fungerar men ändå omständigt...

Medlem sedan aug. 2002536 inlägg
#12

Så här ser koden ut nu:

dim fil, s, r, s1, s2, snew, r1
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

r = inputbox("Ange filnamnet på textfilen du vill byta ut tecken på!", "Textmodifieraren", "")

If fso.GetExtensionName(r)="txt" Then
	If (fso.FileExists(r))=False Then
		msgbox("Filen kunde inte hittas!")
		wscript.Quit
	End If

	r1 = msgbox("Alla å, ä och ö kommer att ersättas med a och o! Vill du fortsätta?", 36, "Vill du fortsätta?")
		if r1 = 6 then
			'''''''''''''''''''''''''''''''''''''''''''''''''''

			fso.copyfile r, r & ".bak", true
	
			set stream = fso.opentextfile(r, 1)
			data = stream.readall()
			set stream = Nothing

			set regex = new RegExp
			regex.global = true
			regex.ignorecase = false

			regex.pattern = "[ÅÄ]"
			data = regex.replace(data, "A")
			regex.pattern = "[Ö]"
			data = regex.replace(data, "O")
			regex.pattern = "[åä]"
			data = regex.replace(data, "a")
			regex.pattern = "[ö]"
			data = regex.replace(data, "o")

			set regex = nothing

			set stream = fso.opentextfile(r, 2)
			stream.write data
			set stream = nothing
		Else
			wscript.Quit
		End If
Else
	msgbox("Endast txt filer kan modifieras!")
	wscript.Quit
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''
msgbox "Klart!", 0
264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)