Frage ist gelöstMit VBS files von rechts kürzen
07.02.2012
15:14:04 Uhr472 Aufrufe
6 Antworten
15:14:04 Uhr
6 Antworten
Noch nicht bewertet
Hallo zusammen
Als VBS Anfänger bräuchte ich wiedereinmal eure hilfe.
Ich möchte gerne via VBScript mehrere Dateien umbenennen bzw. kürzen. Das ganze sollte in etwa so aussehen:
Files im Ordner c:\temp\
FA1_1974629_7294878_20120207_083102067.cmd
FA1_6774629_9294508_20120207_083102665.cmd
FA1_5574629_3294508_20120207_093102667.cmd
FA1_4474629_4294508_20120207_083102630.xml
FA1_2874629_5294568_20120207_893102633.xml
FA1_1874456_6294508_20120207_663104430.xml
usw.
sollen gekürzt werden auf:
FA1_1974629_7294878.cmd
FA1_6774629_9294508.cmd
FA1_5574629_3294508.cmd
FA1_4474629_4294508.xml
FA1_2874629_5294568.xml
FA1_1874456_6294508.xml
Mit anderen Worten es sollen immer die letzte 19 Zeichen gelöscht werden.
Ich wäre sehr dankbar wenn mir jemand weiterhelfen kann.
Als VBS Anfänger bräuchte ich wiedereinmal eure hilfe.
Ich möchte gerne via VBScript mehrere Dateien umbenennen bzw. kürzen. Das ganze sollte in etwa so aussehen:
Files im Ordner c:\temp\
FA1_1974629_7294878_20120207_083102067.cmd
FA1_6774629_9294508_20120207_083102665.cmd
FA1_5574629_3294508_20120207_093102667.cmd
FA1_4474629_4294508_20120207_083102630.xml
FA1_2874629_5294568_20120207_893102633.xml
FA1_1874456_6294508_20120207_663104430.xml
usw.
sollen gekürzt werden auf:
FA1_1974629_7294878.cmd
FA1_6774629_9294508.cmd
FA1_5574629_3294508.cmd
FA1_4474629_4294508.xml
FA1_2874629_5294568.xml
FA1_1874456_6294508.xml
Mit anderen Worten es sollen immer die letzte 19 Zeichen gelöscht werden.
Ich wäre sehr dankbar wenn mir jemand weiterhelfen kann.
dave84620 schreibt am 07.02.2012 um 15:44:23 Uhr
Hey,
versuchs mal in etwa so...
dim x,y as string
x=dir(ordner.....)
do until x=""
y=left(x,len(x)-23)+right(x,4)
name x as y
x=dir
loop
hat keine Fehlerbehandlung oder sonstwas und keine Garantie, daß es so 1:1 funktioniert... das Wort "ordner" muß natürlich gegen den Ordernamen mit den enthaltenen Dateien getauscht werden
Schöne Grüße
Dave
versuchs mal in etwa so...
dim x,y as string
x=dir(ordner.....)
do until x=""
y=left(x,len(x)-23)+right(x,4)
name x as y
x=dir
loop
hat keine Fehlerbehandlung oder sonstwas und keine Garantie, daß es so 1:1 funktioniert... das Wort "ordner" muß natürlich gegen den Ordernamen mit den enthaltenen Dateien getauscht werden
Schöne Grüße
Dave
staga75 schreibt am 07.02.2012 um 16:11:59 Uhr
Hi Dave
Danke für die rasche Antwort. Ich es probiert jedoch bricht das Script mit einem Fehler ab welcher die Zeile 5 betrifft. ich habe es folgendermassen angepasst - weiss nicht ob das so richtig ist, wie erwähnt bin ich was VBS betrifft ein absoluter newbi.
Dim x, y
x=dir("C:\tmp")
do until x=""
y=left(x,len(x)-23)+right(x,4)
name x as y
x=dir
loop
Danke für die rasche Antwort. Ich es probiert jedoch bricht das Script mit einem Fehler ab welcher die Zeile 5 betrifft. ich habe es folgendermassen angepasst - weiss nicht ob das so richtig ist, wie erwähnt bin ich was VBS betrifft ein absoluter newbi.
Dim x, y
x=dir("C:\tmp")
do until x=""
y=left(x,len(x)-23)+right(x,4)
name x as y
x=dir
loop
Karo schreibt am 07.02.2012 um 17:09:31 Uhr
Hi,
oder so:
( ich definiere es eher als die ersten 19 Zeichen stehen lassen
)
bye
Karo
oder so:
( ich definiere es eher als die ersten 19 Zeichen stehen lassen
01.
Option Explicit 02.
Dim strPath, FSO, FLD, fil, strOldName, strNewName 03.
strPath = "C:\TMP" 04.
Set FSO = CreateObject("Scripting.FileSystemObject") 05.
Set FLD = FSO.GetFolder(strPath) 06.
For Each fil in FLD.Files 07.
strOldName = fil.Name 08.
if LEN(strOldName)+4 > 23 then 09.
strNewName = Left(strOldName,19) & Right(strOldName,4) 10.
FSO.MoveFile strOldName, strNewName 11.
end if 12.
Nextbye
Karo
bastla schreibt am 07.02.2012 um 21:45:13 Uhr
Hallo @All!
Unter der Annahme, dass es eigentlich darum ginge, aus den 5 durch "_" getrennten Bestandteilen des Dateinamens nur die ersten 3 zu verwenden (was zumindest die Zeichenzählerei spart), könnte das auch so gehen:
Das "If" in Zeile 8 soll verhindern, dass bereits umbenannte Dateien neuerlich bearbeitet werden.
Grüße
bastla
Unter der Annahme, dass es eigentlich darum ginge, aus den 5 durch "_" getrennten Bestandteilen des Dateinamens nur die ersten 3 zu verwenden (was zumindest die Zeichenzählerei spart), könnte das auch so gehen:
01.
Ordner = "c:\temp" 02.
03.
Set fso = CreateObject("Scripting.FileSystemObject") 04.
For Each File In fso.GetFolder(Ordner).Files 05.
FileName = fso.GetBaseName(File.Name) 06.
FileExt = fso.GetExtensionName(File.Name) 07.
FileParts = Split(FileName, "_") 08.
If UBound(FileParts) > 2 Then File.Name = FileParts(0) & "_" & FileParts(1) & "_" & FileParts(2) & "." & FileExt 09.
NextGrüße
bastla












