gurkenhobel
Goto Top

Von VBS erstellte Batchdatei läuft nicht

Hallo, wieder stehe ich einmal vor einem Rätsel und bitte um Eure Hilfe,

Mit folgendem Script erstelle ich eine Batchdatei:
EingabeDatei = "WBZInfo.csv"  
Ausgabedatei = "Kat.bat" ' Die Zieldatei wird im aktuellen Verzeichnis abgelegt  

Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set fso = CreateObject("Scripting.FileSystemObject")  

If fso.FileExists(EingabeDatei) Then
     Set objEingabe = fso.OpenTextFile(EingabeDatei, ForReading)

Else
     MsgBox "Fehler: Eingabedatei ist nicht vorhanden."  
     Wsh.Quit
End If

Set objAusgabe = fso.CreateTextFile(Ausgabedatei, 2, True)
objEingabe.Skipline ' Die erste Zeile auslassen  

Do While not objEingabe.AtEndOfLine

Inhalt=objEingabe.ReadLine ' ReadAll  
arrays=Split(Inhalt, ";")  

' --------------------------------  
' Die Felder der Datei WBZInfo.csv  
' 4/11 title  
' 5/12 credit  
' 7/16 category - album  
' 10   ID  
' 14   category  
' 17   dailyDateDDMMYYYY  

AB = Chr(34) ' Hoch-Komma oder Gänsefüserl  
alterName=arrays(10) & " " & arrays(4) & ".jpg"  
neuerName=UCase(arrays(16)) & "=" & arrays(10) & " " & arrays(4) & ".jpg"  

objAusgabe.WriteLine "RENAME " & AB & alterName & AB &  " " & AB & neuerName & AB  

Loop

objEingabe.Close
objAusgabe.Close

Set objAusgabe = Nothing
Set objEingabe = Nothing
Set fso = Nothing

MsgBox Ausgabedatei & " erstellt"   

Die Lösung mit AB (Hochkomma) mußte ich wählen, da die Dateinamen viele Leerzeichen aufweisen und so Quelle und Ziel in Hochkommas gesetzt werden mußten, damit der RENAME-Befehl zufriedenstellend arbeitet.

Es wird also eine Batchdatei erstellt, die 1800 Byte gro0 ist. Starte ich diese von der Aufgabeaufforderung aus, so kommt folgende Fehlermeldung:
Der Befehl "■R" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Gebe ich hingegen "type Kat.bat" ein erscheint der Umbenenn-Befehl so wie er sein soll:
RENAME "DateinameAlt.jpg" "DateinameNeu.jpg".

Nun habe ich eine neue Batchdatei 'umgepipt':
type kat.bat > ka.bat.
Diese lä0t sich nun auch ausführen und ist auch nur noch halb so groß (901 kB).

Der fc-Befehl (vergleiche kat.bat und ka.bat) zeigt bei der größeren Datei hinter jedem Zeichen einen Zeilenumbruch (daher wohl die doppelte Größe). Ein Hexeditor meiner Wahl beginnt die Datei mit FF und FE und läßt hinter jedem Zeichen ein NUll zeichen (hex 00) folgen. s. Screenshot

Wie ist das hineingekommen ?

Auf Antwort freut sich

GH Micha

Content-Key: 192945

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

Printed on: April 28, 2024 at 05:04 o'clock

Member: ColdZero89
ColdZero89 Oct 18, 2012 updated at 09:36:36 (UTC)
Goto Top
Moin,

ich kann dir allgemein nicht helfen, dennoch bin ich verwirrt. 901 KB sind nicht die hälfte von 1800 B!
KB = KiloByte ((Byte / 1000) genau genommen Byte / 1024) und Byte sind Byte.
Daher ist die "ka.bat" größer als die "kat.bat"

kat.bat = 1800Byte = 1,76KiloByte
ka.bat = 901KiloByte = 922624 Byte = 0,87MegaByte

Eventuell hast du dich verschrieben, dennoch leicht verwirrend, wenn es richtig geschrieben ist, sp ist die ka.bat halt größer als die kat.bat.

Gruß Zero
Member: bastla
bastla Oct 18, 2012 updated at 10:37:58 (UTC)
Goto Top
Hallo Gurkenhobel!

Lass in Zeile 17 das "True" weg, da Du damit eine Unicode-Datei erzeugst ...

BTW: Wozu die Batchdatei? Umbenennen kannst Du auch mit VBS ...

Grüße
bastla
Member: Gurkenhobel
Gurkenhobel Oct 18, 2012 at 10:55:20 (UTC)
Goto Top
Hallo Bastla,
und wieder einmal hast Du mir sehr schnell helfen können, der Unicode wars.
Zitat von @bastla:
BTW: Wozu die Batchdatei? Umbenennen kannst Du auch mit VBS ...
Ich mags halt immer ein bisschen umständlich.
Umbenennen müßte ich halt Zeile 38 in
fso.MoveFile alterName, neuerName
@ ColdZero89
Zitat von @ColdZero89:
Eventuell hast du dich verschrieben
habe ich auch unbeabsichtigt kb mit Byte verwechselt

Danke und Grüße
Micha
Member: ColdZero89
ColdZero89 Oct 18, 2012 at 10:59:03 (UTC)
Goto Top
Moin,

ok war schon minimalverwundert.

Noch als Gelöst makieren face-big-smile

Gruß Zero