braltar
Goto Top

VBS zur Datei Umbennenung und Entfernen von diverse Character

VBS zur Datei Umbennenung und Entfernen von diverse Character

Hallo,

zuerst Mal... ich bin zeimlich Neuling in VBS.. das Erklärt warscheinlich auch die Frage.

ich habe ein Script die Dateien Aufgrund Erstelldatum umbennent, und numeriert.
Bisher funktioniert dieser auch einwandfrei. nur folgende weitere Funktionen habe ich leider nicht erfolgreich implementieren können.
(sollte unbedingt per VBS gelöst werden, also kein rename Tool...)

Die Dateinamen sehen nach ersten Ablauf so aus...

YYYYMMDDXX-ZZ.JPG also z.B. 20060830CN-01.jpg

und sind alle im gleichen Ordner.

YYYY = Jahr , MM = Monat, DD = Tag, XX = Kürzel ( als Variable von einem Input Box) und ZZ = ist die Nummerierung.


Nun sollte ich

1: die zwei erste nummer des Jahres entfernen

Ergebnis Beispiel Datei:

YYMMDDXX-ZZ.JPG also z.B. 060830CN-01.jpg


2: der - entfernen

Ergebnis Beispiel Datei:

YYMMDDXXZZ.JPG also z.B. 060830CN01.jpg


also in Kurze:

gibt es ein MusterBatch für gewisse Positionen von Dateinamen durch andere (in diesem Fall Leere Zeichen) zu ersetzen?

Vielen Dank im Voraus,
Braltar

Content-Key: 39116

Url: https://administrator.de/contentid/39116

Printed on: April 19, 2024 at 14:04 o'clock

Member: AndreasHoster
AndreasHoster Aug 31, 2006 at 11:08:02 (UTC)
Goto Top
Als vbs Skribt würde ich das so machen:

Set fso = CreateObject("Scripting.FileSystemObject")
' Verzeichnis holen
Set ofolder = fso.GetFolder("Pfad zu Verzeichnis")
' Alle Dateien im Verzeichnis durchgehen
For each file in ofolder.Files
'Name holen
sName = file.Name
'ersten 2 Buchstaben entfernen
sName = Mid(sName,3)
' - durch nichts ersetzen
sName = Replace(sName,"-","")
'Name wieder zurückschreiben
file.name = sName
Next
Member: Biber
Biber Aug 31, 2006 at 11:25:53 (UTC)
Goto Top
Moin Braltar,

Beispiel:
'fnametest.vbs  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
set of =objFSO.GetFile("2006-08-30xy.txt")  
wscript.echo "Filename old [" & of.name & "] rename to --> [" & Mid( of.name ,3) & "]"  
of.name = Mid( of.name ,3)
wscript.echo "Filename now[" & of.name & "]"  
wscript.echo "Filename old [" & of.name & "] rename to --> [" & Replace( of.name ,"-","") & "]"  
of.name = Replace( of.name ,"-","")  
Test am CMD-Prompt:
>cscript //nologo fnametest.vbs
Filename old [2006-08-30xy.txt] rename to --> [06-08-30xy.txt]
Filename now[06-08-30xy.txt]
Filename old [06-08-30xy.txt] rename to --> [060830xy.txt]

HTH Biber
[Edit] Upps, sorry, AndreasHoster.... das war über Kreuz gepostet [/Edit]
Member: Braltar
Braltar Aug 31, 2006 at 13:55:07 (UTC)
Goto Top
Vielen Dank!

genau das habe ich gemeint...

jetzt noch eine "kleine" Frage,

ich möchte noch folgendes tun.

abfragen ob an eine gewisse Position ein Punkt vorhanden ist, wenn ja ein 0 an ein gewisse Position reinschreiben...

also etwas in der Art:

If (von links gezählt an position 8 ein "." vorhanden ist) then
schreib ein "0" an Position 7
else
End If

eine Idee?
Member: AndreasHoster
AndreasHoster Aug 31, 2006 at 14:38:51 (UTC)
Goto Top
Willst Du jetzt das Zeichen an Position 7 durch 0 ersetzen, oder soll an Position 7 eine 0 hinzugefügt werden, also das bisherige 7te Zeichen an die 8. Position rücken?
Member: Biber
Biber Aug 31, 2006 at 14:41:43 (UTC)
Goto Top
Beispiel dafür:
Text ="datei27.3.2005-txt"  
wscript.echo text & " Pos. von [.]=" & Instr(text, ".") _   
                &  " Pos. von [3]="   & Instr( text, "3") _   
                &  " Pos. von [-]="   & Instr(text, "-")  

If mid(text,8,1) = "." then wscript.echo "Ersetzen: " & mid(text,1,7) &"0" & mid(text,9)  
If mid(text,8,1) = "." then wscript.echo "Einfügen: " & mid(text,1,8) &"0" & mid(text,9)  

wscript.quit
'OUTPUT: datei27.3.2005-txt Pos. von [.]=8 Pos. von [3]=9 Pos. von [-]=15  
'OUTPUT: Ersetzen: datei2703.2005-txt  
'OUTPUT: Einfügen: datei27.03.2005-txt  
Member: Braltar
Braltar Aug 31, 2006 at 15:00:49 (UTC)
Goto Top
danke Andreas,

also inder Folge

If Position X auswerten, und im Fall ein gewisser Zeichen Vorhanden ist

then Zeichen an Position Y einfügen, andere Zeichen nach rechts schieben...

wenn nicht vorhanden, namen unbeachtet lassen...

Beispiel

ich habe 2 Dateinamen:

123456-1.jpg und 123456-11.jpg

(weil die automatische numerierung nicht immer 2 nummer einsetz (von 1 bis 9) habe ich verschiedene namens-länge) ein detail, aber ich mag details... face-wink face-wink

darum habe ich gedacht, der . in nur auf Position 8, wenn die Nummerierung nur ein zeichen hat, und ich kann dann (an Position 6 z.Beispiel) ein 0 hinzufügen....

ich hoffe ich kläre mehr durch antworten als ich durcheinander bringe...

vielen Dank.
Member: AndreasHoster
AndreasHoster Aug 31, 2006 at 15:14:54 (UTC)
Goto Top
Im Prinzip wie von Biber vorgeschlagen, nur beim 2. mid ab Stelle 8, da wir hinzufügen, nicht ersetzen wollen:

if mid(sName,8,1) = "." then
sName = mid(sName,1,7) & "0" & mid(sName,8)
end if

Und das einfach vor dem Namen zurückschreiben in meinem Skript einfügen.
Member: Braltar
Braltar Aug 31, 2006 at 17:02:52 (UTC)
Goto Top
vielen vielen dank....

Der Projekt kann jetzt in letzer Schleif gehen...

alles funktionniert wie geplant, und ich weiss jeztz wo ich wirklich hilfe bekomme face-wink

gruss,
braltar