Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Übergabeparameter in Variable

Frage Entwicklung Batch & Shell

Mitglied: .Sessl

.Sessl (Level 1) - Jetzt verbinden

17.02.2011 um 19:04 Uhr, 6055 Aufrufe, 7 Kommentare

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
Mitglied: Biber
17.02.2011 um 19:18 Uhr
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):
>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

Grüße
Biber
Bitte warten ..
Mitglied: .Sessl
17.02.2011 um 19:28 Uhr
Hallo Biber,

vielen Dank für die rasche Antwort.
An für sich ist das immer gleich, d.h. sollten es mal mehr wie 43216 Aufträge werden, würde es mit 000000|100000|00000.MM2 weiter gehen.
Das Problem liegt jedoch, das der Dateiname in einem Übergabeparameter %1 liegt und ich diesen einfach nicht in eine Variable bekomme.
01.
set var=%1 
02.
set var = "%1" 
03.
set /p var = %1
Jedes echo %var% endet mit einem Echo is off. Varible wird also nicht befüllt.


Danke
Gruß Tobias
Bitte warten ..
Mitglied: Biber
17.02.2011 um 19:38 Uhr
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
01.
Set "var=derWertWoVarHabenSoll"
  • Vermeide Leerzeichen VOR dem Gleichheitszeichen
  • Vermeide Leerzeichen Nach dem Gleichheitszeichen
  • Vermeide Leerzeichen NACH dem zugewiesenen Wert

Grüße
Biber
Bitte warten ..
Mitglied: .Sessl
17.02.2011 um 20:01 Uhr
Alter Schwede ..

ich glaub es nicht! Ich war mich sicher das

01.
var=%1
nicht funktionierte, ich glaub ich sollte doch nach Hause gehen
Meine print.cmd sieht nun folgendermaßen aus:

01.
@echo off 
02.
 
03.
set var=%1 
04.
set file=%var:~30% 
05.
set var=%var:~30,10% 
06.
set var=%var%.pdf 
07.
 
08.
rem %1 Dateiname 
09.
set ziel=\\10.10.10.10\PDF_Export 
10.
REM Datei kopieren 
11.
cmd /c copy %1 %ziel% >> \\10.10.10.10\PDF_Export\error.log 
12.
move \\10.10.10.10\PDF_Export\%file% \\10.10.10.10\PDF_Export\%var%  >> \\10.10.10.10\PDF_Export\error.log

Besten Dank für die schnelle Hilfe und die Erhellung!

Gruß Tobias
Bitte warten ..
Mitglied: bastla
17.02.2011 um 20:11 Uhr
Hallo .Sessl!

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"
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
Bitte warten ..
Mitglied: .Sessl
17.02.2011 um 20:30 Uhr
Hallo bastla,

danke für die Ermutigung zum Aufräumen, cmd /c fehlt wirklich nicht, wer hätte das gedacht:

01.
@echo off 
02.
 
03.
set "var=%1" 
04.
set file=%var:~30% 
05.
set var=%var:~30,10% 
06.
set var=%var%.pdf 
07.
 
08.
rem %1 Dateiname 
09.
set ziel=\\10.78.1.235\PDF_Export 
10.
REM Datei kopieren 
11.
copy %1 %ziel% >> %ziel%\error.log 
12.
move %ziel%\%file% %ziel%\\%var%  >> %ziel%\error.log
Besten Dank!

Gruß Tobias
Bitte warten ..
Mitglied: Biber
17.02.2011 um 20:50 Uhr
Moin .Sessl!,

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.
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
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Batch & Shell
Variable setzen können während timeout (3)

Frage von DontFlameMeITryMyBest zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...