Win2K Command line: Dateinamenmanipulationen
MudGuard
- programmiertechnik
Hi,
ich bräuchte mal Hilfe bei einem Batch-File für die Win2K-Commandline-Interpreter (incorrectly known as DOS-Box).
Der/Die/Das Batch bekommt einen Parameter, und zwar einen Filenamen, z.B. bla.xml
Ich bräuchte jetzt aber Zugriff auf den (variablen) Teil vor dem .xml
Wie komme ich also an das "bla"?
Ich brauch das, um damit einen neuen Dateinamen mit gleichem Namen, aber anderer Extension bauen zu können.
Sollte vor dem bla noch ein Pfad vorhanden sein (also z.B. Parameter = d:\blubb\bla.xml), dann muß dieser dabei erhalten bleiben.
Kann mir bitte jemand einen Schubs in die richtige Richtung geben?
cu,
Andreas
Hallo Andreas,
Hast Du auf dem Rechner Perl oder PHP oder sowas? Dann koenntest Du die fuer den Job einspannen. Die WSH waere auch eine Moeglickeit. Mit einer reinen 'DOS'-Loesung kann ich Dir leider auch nicht helfen
Gruß,
Dieter
Hi,
Hast Du auf dem Rechner Perl oder PHP oder sowas?
Leider nein.
Die WSH waere auch eine Moeglickeit.
Dazu ist mein Kenntnis-Stand: ich weiß, daß es das gibt.
cu,
Andreas
Hallo Andreas,
Die WSH waere auch eine Moeglickeit.
Dazu ist mein Kenntnis-Stand: ich weiß, daß es das gibt.
dann kann man auch was draus machen... Man könnte das mal so in ein .js-Datei schreiben und ausprobieren:
var laSplit;
var loFSO = WScript.createObject("Scripting.FileSystemObject");
var lcSource = new String(WScript.Arguments(0));
laSplit = lcSource.split('.'); // laSplit[0] ist der Teil vor dem .
lcTarget = laSplit[0].concat('.csv');
loSource = loFSO.GetFile(lcSource);
loSource.Copy(lcTarget);
Ohne Gewähr - ich habe es nicht getestet. Natürlich ist das ohne allen Fehler- und Ausnahmenbehandlungsluxus - aber wem erzähle ich das?
hth Robert
hi,
Der/Die/Das Batch bekommt einen Parameter, und zwar einen Filenamen, z.B. bla.xml
Ich bräuchte jetzt aber Zugriff auf den (variablen) Teil vor dem .xml
ob das mit den einfachen batch-befehlen und ihrem eingeschränkten funktionsumfang machbar ist?
Kann mir bitte jemand einen Schubs in die richtige Richtung geben?
Dieters Schubs in richtung WSH würde ich schon für eine recht gute richtung halten.
Wie komme ich also an das "bla"?
Ich brauch das, um damit einen neuen Dateinamen mit gleichem Namen, aber anderer Extension bauen zu können.
Sollte vor dem bla noch ein Pfad vorhanden sein (also z.B. Parameter = d:\blubb\bla.xml), dann muß dieser dabei erhalten bleiben.
erlaubt es die aufrufende stelle ggf., das ganze in zwei parameter aufzuteilen?
dateipfad/-name = d:\blubb\bla.xml
=>
parameter #1 = d:\blubb\bla
parameter #2 = xml (oder auch .xml)
gruß,
wahsaga
Hi,
erlaubt es die aufrufende stelle ggf., das ganze in zwei parameter aufzuteilen?
Gewünscht wird:
Das Batchfile liegt als Icon auf dem Desktop.
Der User zieht die xml-Datei per dragndrop auf dieses Icon.
Damit bekommt der Batch den Dateipfad als Parameter (das funktioniert soweit).
Die Aufteilung auf Aufruf-Seite ist also nicht möglich.
Ich werd es vermutlich so lösen, daß ich die Extension nicht ersetze, sondern einfach eine weitere Extension anhänge:
Aus
d:\blubb\bla.xml
wird dann halt
d:\blubb\bla.xml.csv
erzeugt statt
d:\blubb\bla.csv
cu,
Andreas
hi,
Ich werd es vermutlich so lösen, daß ich die Extension nicht ersetze, sondern einfach eine weitere Extension anhänge:
Aus
d:\blubb\bla.xml
wird dann halt
d:\blubb\bla.xml.csv
erzeugt statt
d:\blubb\bla.csv
copy blah.xml blah.xml.csv // oder wie auch immer die neue datei erstellt wird
ren *.*.csv *.csv
kann aber natürlich nur dann funktionieren, wenn der dateiname selbst keinen punkt enthält, also nur name.endung
gruß,
wahsaga
Hallo,
als Variante der Idee von wahsaga würde ich vorschlagen, den Aufruf der Batchdatei so zu ändern, dass der Name ohne Extension übergeben wird. Die Endung ".xml" hängt die Batchdatei dann fest an.
Das geht natürlich nur dann, wenn die Extension immer dieselbe ist.
Ciao,
Martin
Hi,
als Variante der Idee von wahsaga würde ich vorschlagen, den Aufruf der Batchdatei so zu ändern, dass der Name ohne Extension übergeben wird. Die Endung ".xml" hängt die Batchdatei dann fest an.
Siehe Antwort auf wahsaga: der Aufruf wird durch DragNDrop geschehen, die XML-Datei wird auf die Batchdatei gezogen.
Ich werd vermutlich (falls nicht noch jemand mit ner genialen Idee kommt) die neue Extension anhängen.
Das geht natürlich nur dann, wenn die Extension immer dieselbe ist.
Das wäre zwar der Fall, aber der Aufruf per DragNDrop läßt das Abschneiden des .xml nicht zu ;-)
cu,
Andreas
Tach nochmal,
Das geht natürlich nur dann, wenn die Extension immer dieselbe ist.
Das wäre zwar der Fall, aber der Aufruf per DragNDrop läßt das Abschneiden des .xml nicht zu ;-)
Stimmt. Aber von Dreck & Drops war im Ausgangsposting leider noch keine Rede. ;)
So long,
Martin
Hi Andreas,
lege Dir mal eine vbs-Datei mit folgendem Inhalt an:
set objArgs = Wscript.Arguments
For i = 0 to objArgs.Count - 1
strText = strText & objArgs.item(i)
Next
strA = left(strText, len(strText)-4)
MsgBox strA, ,WScript.ScriptName
Ziehe dann mal eine Datei auf diese vbs-Datei.
Vielleicht hilft Dir das etwas.
Viele Grüße
Jörg
Hi,
set objArgs = Wscript.Arguments
For i = 0 to objArgs.Count - 1
strText = strText & objArgs.item(i)
Next
strA = left(strText, len(strText)-4)
Da es nur 1 Parameter geben wird (DragNDrop), hab ich dann also nach
set objArgs = Wscript.Arguments
strText = objArgs.item(0)
strA = left(strText, len(strText)-4)
in strA den gekürzten Dateinamen.
Dann muß ich nur noch rausfinden, wie ich damit mein bla.bat aufrufe ...
cu,
Andreas
Hi Andreas,
sieh Dir mal Shell an.
Viele Grüße
Jörg
Moin.
Der/Die/Das Batch bekommt einen Parameter,
Aber, aber. Seit Imbissdeutsch für Fortgeschrittene wissen wir doch: es muß _Den_ Batch heißen.
Gruß Frank
P.S. Mehr gibts im Videoarchiv von NDR Extra 3.
Hallo,
Ich brauch das, um damit einen neuen Dateinamen mit gleichem Namen, aber anderer Extension bauen zu können.
Vielleicht hilft: Wie in einer Zeichenkette Zeichen entfernt/ersetzt werden koennen.
MfG, Thomas
Hi,
Ich brauch das, um damit einen neuen Dateinamen mit gleichem Namen, aber anderer Extension bauen zu können.
Vielleicht hilft: Wie in einer Zeichenkette Zeichen entfernt/ersetzt werden koennen.
Sieht mächtig kompliziert aus.
Und das ersetzt wohl eher alle Vorkommen von x durch y.
Ich hab inzwischen zusammen mit Jörg ne funktionierende Lösung (DragNDrop auf ein .vbs statt auf den Batch, das .vbs manipuliert den Namen und ruft dann das .bat mit dem gekürzten Namen auf, an den ich dann je nach Bedarf .xml bzw. .csv anhänge.
cu,
Andreas