Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 6239 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 ..
Ähnliche Inhalte
Entwicklung
C sharp Übergabeparameter aus Liste wählbar machen (2)

Frage von MartinAD zum Thema Entwicklung ...

Batch & Shell
gelöst Mit zusammengesetzter Variable auf andere Variable zugreifen (2)

Frage von abiber zum Thema Batch & Shell ...

VB for Applications
Auswahlliste mit variablen (3)

Frage von 94451 zum Thema VB for Applications ...

Batch & Shell
gelöst Variable in Regedit (3)

Frage von MeinSenfDazu zum Thema Batch & Shell ...

Neue Wissensbeiträge
Mac OS X

Apple hat macOS High Sierra veröffentlicht

Information von Frank zum Thema Mac OS X ...

Viren und Trojaner

Ransomware or Wiper? RedBoot Encrypts Files but also Modifies Partition Table

(4)

Information von BassFishFox zum Thema Viren und Trojaner ...

Notebook & Zubehör

WOL bei HP Notebooks

(7)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

Heiß diskutierte Inhalte
Windows 10
gelöst Netzwerkkarte schaltet sich erst nach dem Logon ein (24)

Frage von DerWoWusste zum Thema Windows 10 ...

Windows Server
Seit IP Umstellung DC DNS Fehler (22)

Frage von Yaimael zum Thema Windows Server ...

Grafik
gelöst CAD Arbeitsplätze (17)

Frage von Diddi93 zum Thema Grafik ...