Avatar billede cuac Nybegynder
23. marts 2004 - 08:42 Der er 13 kommentarer og
1 løsning

DOS program til rename funktion

Jeg har et lille program som omdøber nogle filer, det ser ud som følger. Mit problem er at jeg skal køre programmet 5 gange, og samtidig ændre hver gang , da mine filer indeholder tallet 1, 2 3, 4, eller 5. Kan jeg ikke lave en løkke så jeg bare kan køre programmet 1 gang, jeg er ret pas på DOS programmering, mit filnavn varierer noget i længde, så derfor ? tegnet, kan jeg lave det anderledes ved hjælp af et andet jokertegn.


rem Giver NMR export tekstfiler DOS-kompatible navne
:Datafiler
ren ????????.00001.dat.txt ????????1.dat
ren ???????.00001.dat.txt ???????1.dat
ren ??????.00001.dat.txt ??????1.dat
ren ?????.00001.dat.txt ?????1.dat
ren ????.00001.dat.txt ????1.dat
ren ???.00001.dat.txt ???1.dat
ren ??.00001.dat.txt ??1.dat
ren ?.00001.dat.txt ?1.dat
:Parameterfiler
ren ????????.00001.par.txt ????????1.par
ren ???????.00001.par.txt ???????1.par
ren ??????.00001.par.txt ??????1.par
ren ?????.00001.par.txt ?????1.par
ren ????.00001.par.txt ????1.par
ren ???.00001.par.txt ???1.par
ren ??.00001.par.txt ??1.par
ren ?.00001.par.txt ?1.par
Avatar billede nmh Nybegynder
23. marts 2004 - 09:42 #1
Med et VBscript program kan du omdøbe filer uden problemer.
Men fortæl lige lidt mere om din situation.
Avatar billede cuac Nybegynder
23. marts 2004 - 09:49 #2
Ok

Jeg står i stifinder, og afvikler så mit program Omdøbe.CMD, som herefter løber filerne igennem i det pågældende directory. Disse bliver omdøbt efter ovenstående system. Herefter må jeg ind og ændre 1 tallet til et 2 tal, gemme programmet, og så køre det en gang til, og så fremdeles  med tallet 3, 4 og 5. Så det er lidt omstændeligt. Jeg ville gerne kunne køre programmet af en gang, altså noget med en løkke (for next). Håber det nok forklaring. Et VB script lyder interessant.
Avatar billede nmh Nybegynder
23. marts 2004 - 10:53 #3
Så en fil ender med at have et navn af form  1.dat, 1.par, 2.dat,...
Har jeg forstået dig ret.
Prøv at give en række eksempler på konkrete filnavne og fortæl, hvad de skal ende med at hedde.
Avatar billede cuac Nybegynder
23. marts 2004 - 11:12 #4
Du har forstået det helt rigtigt. Filerne kan have mange forskellige navne:

Som udgangspunkt kan de hedde

AB.00001.dat.txt
AB.00001.par.txt
AB.00002.dat.txt
AB.00002.par.txt
AB.00003.dat.txt
AB.00003.par.txt
AB.00004.dat.txt
AB.00004.par.txt
AB.00005.dat.txt
AB.00005.par.txt

disse bliver så til
AB1.dat
AB1.par
AB2.dat
AB2.par og sådan fortsætter det indtil AB5

Håber det er nok
Avatar billede nmh Nybegynder
23. marts 2004 - 11:32 #5
Ville der også kunne være nogle, der hed
AB.00091.dat.txt som så skulle blive til AB91.dat
Avatar billede cuac Nybegynder
23. marts 2004 - 11:38 #6
Nej
Tallet vil maksimalt være 9, altså AB.00009.dat.txt.
Det er kun det sidste ciffer der kan svinge fra 1-9, i det tilfælde jeg har nævnt svinger det fra 1 til 5, og der er altid fire nuller foran.
Avatar billede nmh Nybegynder
23. marts 2004 - 12:23 #7
Ok, jeg ser på det, men det bliver nok først sent i aften eller i morgen aften.
Avatar billede nmh Nybegynder
23. marts 2004 - 13:46 #8
Nå, jeg fik alligevel tid til at se på det nu.
Nedenstående VBscript skal du gemme i det katalog, hvor du har de filer, du skal have omdøbt, liggende. Gem det ved f.eks. at bruge Notepad.exe. Du kan give det navnet rename.vbs.

Når du så klikker på ikonen, skulle dine filer gerne blive omdøbt.
Jeg har ikke gjort noget for at se på om der skulle være store bogstaver nogle steder. Hvis en fil hedder AB.00001.dat.Txt vil den ikke blive omdøbt.



Option Explicit

Dim fso:    Set fso = CreateObject("Scripting.FileSystemObject")
Dim N

Sub Main
  Dim CurrentFolder: Set CurrentFolder = fso.GetFolder(".")
  NewFileNames CurrentFolder
End Sub

Sub NewFilenames (ByVal Folder)
  Dim Files: Set Files = Folder.Files
  Dim File, Name
  For Each File In Files
    Name=File.name
    If Instr(Name,".0000")>0 Then
      Name=Replace(Name,".0000","")
      Name=Replace(Name,".txt","")
      File.Move Name
      N=N+1
    End If
  Next
End Sub

Main
MsgBox N & " filer er omdøbt"
Avatar billede cuac Nybegynder
23. marts 2004 - 14:13 #9
Super, super det virker bare. Det virker nu også med store bogstaver, hvorfor skulle det egentlig ikke det. Tak for det hurtige svar.

cuac
Avatar billede cuac Nybegynder
23. marts 2004 - 14:20 #10
Jeg var lige hurtig nok, den omdøber fint nok, men den beholder .txt efter det nye filnavn, hvordan får jeg lige det fjernet.
Avatar billede nmh Nybegynder
23. marts 2004 - 14:28 #11
Mon ikke det er fordi, der står f.eks. AB.00001.Txt?
Hvis der står ABC.00001.txt skulle det virke.
Jeg valgte ikke at bkymre mig om dette. En hurtig løsning er at sørge for at alt er med små bogstaver.
Men så vil AB.00001.txt blive til ab1.txt.
Hvis det ikke gør noget, skal du blot i scriptet ændre ordren
Name=File.name
til
Name=Lcase(File.name)

Men alt kan lade sig gøre. Du skal blot sige til. :o)
Avatar billede cuac Nybegynder
23. marts 2004 - 14:42 #12
Du har ret i originalfilerne står der: Filnavn.Dat.Txt beklager. Jeg har tilføjet din sidste linie, og nu kører det, det eneste er at så bliver originalfilnavnet med småt, men det er OK
Avatar billede nmh Nybegynder
23. marts 2004 - 14:51 #13
En hurtig løsning er så at lave det om til lutter store bogstaver. Sådan f.eks.
Proceduren NewFileName bliver så til:

Sub NewFilenames (ByVal Folder)
  Dim Files: Set Files = Folder.Files
  Dim File, Name
  For Each File In Files
    Name=Ucase(File.name)
    If Instr(Name,".0000")>0 Then
      Name=Replace(Name,".0000","")
      Name=Replace(Name,".TXT","")
      File.Move Name
      N=N+1
    End If
  Next
End Sub


Hvis du vil have det til at ende med AB1.dat eller AB1.par skal der ændres en lille smule mere.
Du skal bare sige til.
Avatar billede nmh Nybegynder
23. marts 2004 - 14:55 #14
Det kunne f.eks. være
Sub NewFilenames (ByVal Folder)
  Dim Files: Set Files = Folder.Files
  Dim File, Name
  For Each File In Files
    Name=Ucase(File.name)
    If Instr(Name,".0000")>0 Then
      Name=Replace(Name,".0000","")
      Name=Replace(Name,".TXT","")
      Name=Replace(Name,"DAT","dat")
      Name=Replace(Name,"PAR","par")
      File.Move Name
      N=N+1
    End If
  Next
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester