[MS-DOS] Laatste karakter verwijderen van txt bestanden

Pagina: 1
Acties:
  • 130 views sinds 30-01-2008
  • Reageer

  • Rahvin47
  • Registratie: Oktober 2002
  • Laatst online: 20-06-2023
Hoi,

Ik heb een reeks log-files, waarvan het laatste karakter een "return" is.
Die moet weg.
Weten jullie een bat-script om het LAATSTE karakter van een aantal txt files te wijzgen/verwijderen?

Zelf zat ik te denken aan echo <backspace> >>logfile.txt
En dan ipc <backspace> het ascii commando ervoor...
Is dat niet zoiets als ^B ?

Alvast bedankt!

Life is what happens while you make other plans.


  • trigger808
  • Registratie: Mei 2004
  • Niet online
ik weet het niet zeker en heb helaas geen mogelijkheid tot testen:

in DOS:
rename *.log ?????.* (waarbij * en ? ook echt die tekens zijn en de ? het aantal goede letters is

in Windows:
alle log files selecteren en dan 1 renamen en elk bestand krijgt die naam met (1) (oplopend) erachter

  • EXX
  • Registratie: Juni 2001
  • Laatst online: 22-08 21:53

EXX

EXtended eXchange

Ik begrijp eruit dat je het laatste karakter IN de file bedoeld dat weg moet. Dit gaat in DOS met een batch file niet lukken, daar zul je toch echt een of ander progsel voor moeten schrijven.

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


  • Rahvin47
  • Registratie: Oktober 2002
  • Laatst online: 20-06-2023
EXX schreef op woensdag 05 januari 2005 @ 16:34:
Ik begrijp eruit dat je het laatste karakter IN de file bedoeld dat weg moet. Dit gaat in DOS met een batch file niet lukken, daar zul je toch echt een of ander progsel voor moeten schrijven.
Hier gaat het om inderdaad.
Sorry dat ik niet zo duidelijk was.
Heb jij een idee van zo'n progsel?

Alvast bedankt...

Life is what happens while you make other plans.


Verwijderd

effe snel dan:
code:
1
2
3
4
5
6
7
8
9
10
DIM temp AS STRING * 1
invoer$ = bestandsnaam1
uitvoer$ = bestandsnaam2
OPEN invoer$ FOR BINARY AS #1
OPEN uitvoer$ FOR BINARY AS #2
  FOR i = 1 TO LOF(1) - 1
    GET #1, , temp
    PUT #2, , temp
  NEXT i
CLOSE #1, #2


(qbasic)
Moet wel je input en output verschillen en je output mag niet betsaan :p hij ramt gewoonweg domweg allles over behalve laatste byte


Maar ik ga werken :p

  • Rahvin47
  • Registratie: Oktober 2002
  • Laatst online: 20-06-2023
Dat heb je ff goed gedaan _/-\o_
Kan ik ook zoiets in VBA for Excel doen?
Of kan die niet zo met files opschieten?

Life is what happens while you make other plans.


  • Acheron
  • Registratie: September 2002
  • Laatst online: 00:48

Acheron

updatepack.nl

Wat een onzin zeg, tuurlijk kan dit wel met een batch, probeer het eens met
code:
1
findstr

Zeg nee tegen bloatware. Download Nero Lite!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
VBA:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim fIn as integer
Dim fOut as integer
Dim sTMP as string

fIn = FreeFile
Open "C:\bla.log" For Binary as #fIn
fOut = FreeFile
Open "C:\Bla_new.log" For Binary as #fOut

sTmp = String(Lof(fIn)," ")
Get #fIn,,sTmp
Close #fIn

sTmp = Left(sTmp,Len(sTmp)-1)
Put #fOut,,sTmp
Close #fOut

Zoiets, uit de losse pols...
Staat er overigens alleen een Carriage Return, of een Line-Feed Carriage Return? Want dan dien je dus 2 bytes achteraan te verwijderen...Regel 14 wordt dan dus:

Visual Basic .NET:
1
sTmp = Left(sTmp,Len(sTmp)-2) 

[ Voor 55% gewijzigd door RobIII op 06-01-2005 14:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Rahvin47
  • Registratie: Oktober 2002
  • Laatst online: 20-06-2023
WOW :D Dat is snel!

Thanks dude!
Ik ga het meteen proberen!

Life is what happens while you make other plans.


  • EXX
  • Registratie: Juni 2001
  • Laatst online: 22-08 21:53

EXX

EXtended eXchange

hp38guser schreef op donderdag 06 januari 2005 @ 14:39:
Wat een onzin zeg, tuurlijk kan dit wel met een batch, probeer het eens met
code:
1
findstr
findstr is geen standaard MS-DOS batch command. Het bestaat alleen in Win2000/XP cmd box; voor WinNT moet je een package installeren.

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt coden of je kunt het niet hé ;) :Y)
Rahvin47 schreef op donderdag 06 januari 2005 @ 14:43:
Thanks dude!
Ik ga het meteen proberen!
Graag gedaan. Overigens is de findstr die hp38guser suggesteert ook niet onaardig, maar dan moet je dus met regular expressions aan de slag ;)
EXX schreef op donderdag 06 januari 2005 @ 14:45:
[...]
findstr is geen standaard MS-DOS batch command. Het bestaat alleen in Win2000/XP cmd box; voor WinNT moet je een package installeren.
VBA werkt ook niet onder MS-Dos ;) en TS vroeg er toch om...

[ Voor 30% gewijzigd door RobIII op 06-01-2005 14:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Acheron
  • Registratie: September 2002
  • Laatst online: 00:48

Acheron

updatepack.nl

Ik had het ook niet over een ms-dos batch 8)7

Zeg nee tegen bloatware. Download Nero Lite!


  • EXX
  • Registratie: Juni 2001
  • Laatst online: 22-08 21:53

EXX

EXtended eXchange

Tja, eeh, in de topic titel staat toch echt [MS-DOS], dus dan ga ik er vanuit dat er een DOS batch in elkaar gefrutsteld moet worden ;)

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 00:31

The Eagle

I wear my sunglasses at night

:? Zelf schrijven :?

UltraEdit kan dit gewoon hoor, en als ik me niet vergis ook in batch :)

(kan het nu alleen niet checken want ik zit helaas gelukkig (heb 2 weken vakantie :) ) niet op mijn werk, waar ik UEdit vrijwel dagelijks gebruik)

[ Voor 10% gewijzigd door The Eagle op 06-01-2005 14:54 ]

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • Rahvin47
  • Registratie: Oktober 2002
  • Laatst online: 20-06-2023
In de titel stond inderdaad MS-DOS.
Ik wist niet dat vanuit een excel VBA script ook gewoon txt-bestanden kon openen en bewerken.
Nu begrijp ik ook waarom excel vraagt of je macro's wilt enablen :P

Bedankt voor jullie reacties!

Life is what happens while you make other plans.


  • Rahvin47
  • Registratie: Oktober 2002
  • Laatst online: 20-06-2023
Ik voer deze code in in mijn VBA scriptje

Set InputFile = "G:\Iedereen\SPITS\correctie\Temp\" & BestandsnaamJRN

BestandnaamJRN is ervoor al gedefinieerd (dmv van InputBox)
Hij zegt echter Object vereist of zoiets???

Een paar regels ervoor dat hij zelf :
ActiveWorkbook.SaveAs Filename:="G:\Iedereen\SPITS\correctie\Temp\" & BestandsnaamJRN _
, FileFormat:=xlUnicodeText, CreateBackup:=False

Wat doe ik fout?
Kan ik de variabele niet aanwijzen als een combinatie van twee strings? :?

Life is what happens while you make other plans.


  • Rahvin47
  • Registratie: Oktober 2002
  • Laatst online: 20-06-2023
Laat maar :-)
Ik hebt het Set commando weggehaald, dan doet ie het wel!

Life is what happens while you make other plans.

Pagina: 1