Übergabeparameter in Variable
Hallo zusammen,
folgendes Problem:
PDF Druck aus SAP mittels Kommando das eine *.cmd Datei auf OS Ebene ausführt, welche die PDF Datei auf einen externen Server in eine Freigabe schiebt.
Bis hierher funktioniert alles, *.cmd sieht folgendermaßen aus:
@echo off
REM %1 Dateiname
set ziel=\\10.10.10.10\PDF_Export
REM Datei kopieren
cmd /c copy %1 %ziel% >> \\10.10.10.10\PDF_Export\error.log
Jedoch wird die PDF Datei mit der Spool Nr. gespeichert: z.B. 00000004321600000.MM2 (MM2 ist die SystemID des SAP <SID>)
Ich möchte nun den Übergabeparameter %1 in eine Variable stecken, die Pfadangaben abschneiden, damit ich die Datei folgendermaßen umbenennen kann: 43216.pdf
Doch aus irgendeinem Grund will mir das nicht gelingen, ich bekomme diesen Parameter nicht in eine Variable.
Hab schon verschiedenste Foren durchsucht und auch hier kam die Frage mal auf, wurde jedoch nicht wirklich beantwortet.
Im Nachhinein über das Verzeichnis schauen möchte ich nicht, da ich diesen Server nicht verwalte.
Ist mein Vorhaben umsetzbar oder sollte ich mir einen komplett anderen Weg suchen?
DANKE!
Gruß Tobias
folgendes Problem:
PDF Druck aus SAP mittels Kommando das eine *.cmd Datei auf OS Ebene ausführt, welche die PDF Datei auf einen externen Server in eine Freigabe schiebt.
Bis hierher funktioniert alles, *.cmd sieht folgendermaßen aus:
@echo off
REM %1 Dateiname
set ziel=\\10.10.10.10\PDF_Export
REM Datei kopieren
cmd /c copy %1 %ziel% >> \\10.10.10.10\PDF_Export\error.log
Jedoch wird die PDF Datei mit der Spool Nr. gespeichert: z.B. 00000004321600000.MM2 (MM2 ist die SystemID des SAP <SID>)
Ich möchte nun den Übergabeparameter %1 in eine Variable stecken, die Pfadangaben abschneiden, damit ich die Datei folgendermaßen umbenennen kann: 43216.pdf
Doch aus irgendeinem Grund will mir das nicht gelingen, ich bekomme diesen Parameter nicht in eine Variable.
Hab schon verschiedenste Foren durchsucht und auch hier kam die Frage mal auf, wurde jedoch nicht wirklich beantwortet.
Im Nachhinein über das Verzeichnis schauen möchte ich nicht, da ich diesen Server nicht verwalte.
Ist mein Vorhaben umsetzbar oder sollte ich mir einen komplett anderen Weg suchen?
DANKE!
Gruß Tobias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 161041
Url: https://administrator.de/forum/uebergabeparameter-in-variable-161041.html
Ausgedruckt am: 22.04.2025 um 03:04 Uhr
7 Kommentare
Neuester Kommentar
Moin Sessl,
ist denn die Anzahl der zu entsorgenden "führenden" und "folgenden" Nullen konstant,
d.h. wie in deinem Beispiel 7x Ziffer "0" am Namensanfang und 5x "0" am Namensende?
Dann könntest du nach folgender Mimik verfahren (Demo am CMD-Prompt):
versuchte Kurzerläuterung.
Grüße
Biber
ist denn die Anzahl der zu entsorgenden "führenden" und "folgenden" Nullen konstant,
d.h. wie in deinem Beispiel 7x Ziffer "0" am Namensanfang und 5x "0" am Namensende?
Dann könntest du nach folgender Mimik verfahren (Demo am CMD-Prompt):
>set "PDFname=00000004321600000.MM2"
>echo SET "PDFName=%pdfname:~7,5%%pdfname:~-4%"
SET "PDFName=43216.MM2"
versuchte Kurzerläuterung.
%pdfname:~7,5% --> Nimm von der Variable %pdfname% den Teilstring ab Position 7 (beginne mit Pos 0 zu zählen) in der Länge 5
%pdfname:~-4%" --> Mimm von der Variable %pdfname% den Teilstring 4 Zeichen vom Ende an gerechnet
%pdfname:~-4%" --> Mimm von der Variable %pdfname% den Teilstring 4 Zeichen vom Ende an gerechnet
Grüße
Biber
Moin .Sessl ,
ich habe deine drei Zeilen mal in Codetags gestzt, dann ist es einfacher zu sehen.
In Zeile 02 und Zeile 03 ist das Problem, dass du nicht etwa eine Variable %var% setzt (wie du glaubst), sondern eine Variable %var[Leerzeichen]%.
Mach mal statt eines [echo %var%] wie in deinem Test ein [Set var], dann siehst du, was ich meine.
Gewöhne dir an, die Zuweisungen strikt so zu schreiben
Grüße
Biber
ich habe deine drei Zeilen mal in Codetags gestzt, dann ist es einfacher zu sehen.
In Zeile 02 und Zeile 03 ist das Problem, dass du nicht etwa eine Variable %var% setzt (wie du glaubst), sondern eine Variable %var[Leerzeichen]%.
Mach mal statt eines [echo %var%] wie in deinem Test ein [Set var], dann siehst du, was ich meine.
Gewöhne dir an, die Zuweisungen strikt so zu schreiben
Set "var=derWertWoVarHabenSoll"
- Vermeide Leerzeichen VOR dem Gleichheitszeichen
- Vermeide Leerzeichen Nach dem Gleichheitszeichen
- Vermeide Leerzeichen NACH dem zugewiesenen Wert
Grüße
Biber
Hallo .Sessl!
Wenn Du jetzt nach Hause gehst, nimm das "
... und nur für den Fall des Falles würde ich noch eine andere Schreibweise für die Zeile 3 wählen:
So landen sicher keine den Parameter 1 umgebende Anführungszeichen in der Variablen (und wenn's die - die Anführungszeichen - sowieso schon nicht gibt, macht das auch nix).
Letzter Hinweis: Wenn "\\10.10.10.10\PDF_Export" schon mal in einer Variablen (%ziel%) untergebracht ist, solltest Du die in weiterer Folge auch (ausschließlich - wird damit leichter wartbar) verwenden.
Grüße
bastla
Wenn Du jetzt nach Hause gehst, nimm das "
cmd /c
" mit und schau morgen mal, ob es jemandem fehlt ... ... und nur für den Fall des Falles würde ich noch eine andere Schreibweise für die Zeile 3 wählen:
set "var=%~1"
Letzter Hinweis: Wenn "\\10.10.10.10\PDF_Export" schon mal in einer Variablen (%ziel%) untergebracht ist, solltest Du die in weiterer Folge auch (ausschließlich - wird damit leichter wartbar) verwenden.
Grüße
bastla
Moin .Sessl!,
noch ein allerletzter Hinweis.
In diesem Fall "print", in anderen Fällen, die auch hier im Forum gelandet sind "format" oder "copy".
Nenn doch deine Skriptdatei "PdfDruck.cmd" oder "printmich.cmd" oder aber (was am schwersten immer einzuhalten ist) rufe sie immer mit vollständigem Pfad und Endung auf.
Andererseits....
Selbst wenn du nur 30% der gut gemeinten Ratschläge im ersten Anlaufs befolgst, dürfte das schon einen 100%igen Spassgewinn beim Bätchebasteln bewirken.
Grüße
Biber
noch ein allerletzter Hinweis.
Zitat von @.Sessl:
ich glaub es nicht! Ich war mich sicher
...
Meine print.cmd sieht nun folgendermaßen aus:
Es kann auch unerwünschte Seitenffekte haben, wenn du deine Schnipsel so nennst, wie sich auch schon andere interne/externe Befehle benannt haben.ich glaub es nicht! Ich war mich sicher
...
Meine print.cmd sieht nun folgendermaßen aus:
In diesem Fall "print", in anderen Fällen, die auch hier im Forum gelandet sind "format" oder "copy".
Nenn doch deine Skriptdatei "PdfDruck.cmd" oder "printmich.cmd" oder aber (was am schwersten immer einzuhalten ist) rufe sie immer mit vollständigem Pfad und Endung auf.
Andererseits....
Selbst wenn du nur 30% der gut gemeinten Ratschläge im ersten Anlaufs befolgst, dürfte das schon einen 100%igen Spassgewinn beim Bätchebasteln bewirken.
Grüße
Biber