Top-Themen

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

Übergabe von Parameter an eine Batch Funktion inklusive obere Anführungszeichen

Frage Entwicklung Batch & Shell

Mitglied: HuberDe

HuberDe (Level 1) - Jetzt verbinden

03.04.2012 um 10:41 Uhr, 4084 Aufrufe, 6 Kommentare

Hallo zusammen,

ich habe mir einen Batchrumpf gebastelt, mit dem ich ein einfaches Logging der darin gemachten Dinge erzielen möchte:

SET filename=%~n0 
SET logfile=C:\%filename%.log 
 
CALL:printLogLine "Starting installation of %filename%.bat" 
CALL:printCmdOutput "if exist "\Documents and Settings\All Users\Desktop\Quicktime Player.lnk" del "\Documents and Settings\All Users\Desktop\Quicktime Player.lnk" 
 
goto:eof 
 
REM Echo the date/time stamp including a logline to a file 
:printLogLine 
ECHO %date%^|%TIME:~0,8%^|%filename%.bat, %~1 >> %logfile% 
goto:eof 
 
REM Echo the date/time stamp and execute the given command printing both into a logfile 
:printCmdOutput 
ECHO %date%^|%TIME:~0,8%^|%filename%.bat: >> %logfile% 
%~1 %~2 %~3 %~4 %~5 %~6 %~7 %~8 %~9 >> %logfile% 2>&1 
goto:eof
Damit würden auch die Ausgaben des DEL Aufrufs mit einem Zeitstempel in der Logfile landen. Nun habe ich jedoch das Problem, dass ich nicht weiß wie ich " maskieren kann.
Wenn ich die Zeile in Form von

CALL:printCmdOutput "if exist \Documents and Settings\All Users\Desktop\Quicktime Player.lnk del \Documents and Settings\All Users\Desktop\Quicktime Player.lnk
schreibe, werden die äußeren Anführungszeichen bei der Übergabe an die Funktion geschluckt. So etwas

CALL:printCmdOutput "if exist """\Documents and Settings\All Users\Desktop\Quicktime Player.lnk""" del """\Documents and Settings\All Users\Desktop\Quicktime Player.lnk"
funktionier jedoch auch nicht. Und auch mit ^ maskieren scheint nicht zu klappen. Mein Beispiel funktioniert auch nur, weil den String eben in 9 Argumente aufteilt und die " zwischendrin
als Text gesehen werden. Das ist aber so nicht schön und auch nicht wirklich nachvollziehbar. Ich bin echt am Verzweifeln. Habe schon einiges versucht, aber irgendwie will es auf keine Art klappen.
Auf meine Art sehen die einzelnen Übergabeparameter wie folgt aus:

C:\>test.bat 
if exist "\Documents 
and 
Settings\All 
Users\Desktop\Quicktime 
Player.lnk" del "\Documents 
and 
Settings\All 
Users\Desktop\Quicktime 
Player.lnk"
Wie kann ich die " so übergeben, dass sie erhalten bleiben und nicht von der Funktion verschluckt werden?

Danke
Mitglied: Skyemugen
03.04.2012 um 11:17 Uhr
Aloha,

entschuldige, Baum?

Welche Anführungszeichen willst du jetzt wie? Irgendwie versteh ich's nicht so wirklich ... gib' doch mal bitte das Beispiel aus, wie es in der Ausgabe aussehen sollte, sonst verwirren mich die Tilde-Zeichen nämlich noch mehr ~

greetz André
Bitte warten ..
Mitglied: HuberDe
03.04.2012 um 11:29 Uhr
Hmm, habe ich mich noch nicht deutlich genug ausgedrückt

Ich möchte zum Beispiel ein ganze einfaches Kommando wie

Del C:\blub abc\test.txt
in einer Batchfile ausführen. Das müsste ich dann allerdings so machen

Del "C:\blub abc\test.txt"
da im Pfad ein Leerzeichen enthalten ist. Wenn ich das jetzt jedoch an eine Batch Funktion übergebe,

CALL:testFunction Del "C:\blub abc\test.txt"
steht in

Argument1=Del

und in

Argument2=C:\blub abc\test.txt

ohne die oberen Anführungszeichen. Gleiches passiert, wenn ich die Anführungszeichen komplett drumrum mache:

CALL:testFunction "Del C:\blub abc\test.txt"
An für sich sollte ich ja sowas haben:

CALL:testFunction "Del "C:\blub abc\test.txt""
Denn die äußeren Anführungszeichen werden von der Funktion testFunction geschluckt. Und die Anderen sollten für den eigentlichen Del Befehl übrig bleiben.
Was jedoch dann in der Funktion ankommt, ist

Argument1: del "c:\blub
Argument2: abc\test.txt""

Ich hoffe jetzt ist es deutlicher
Bitte warten ..
Mitglied: Skyemugen
03.04.2012 um 11:41 Uhr
Aloha,

du hast schon den Wink mit der Tilde gelesen, oder?

Wenn man %~2 statt %2 nimmt, muss man sich nicht wundern, dass "C:\blub abc\test.txt" zu C:\blub abc\test.txt wird.

Als nächstes stellt sich mir die Frage, wenn da wirklich nur zwei Zeilen Loggesülze kommen, warum man unbedingt einen call setzen will und diese Problematik damit hervorruft?

An sich eine interessante Problematik ...

aber wie so oft: Sinn der Aktion? Muss man das jetzt so lösen wollen oder vergeudet man nur Zeit?

greetz André

P.S.:
01.
set "Befehl="Del "C:\blub abc\test.txt"""
oder wie? Nachwievor sinnlos aber als Übergabe machbar ...
01.
set "Befehl="if exist "\Documents and Settings\All Users\Desktop\Quicktime Player.lnk" del "\Documents and Settings\All Users\Desktop\Quicktime Player.lnk""" 
02.
%Befehl%>%temp%\sinnfrei.log 2>&1
Bitte warten ..
Mitglied: HuberDe
03.04.2012 um 11:54 Uhr
Hmm,

vieleeeen Dank! So sieht es schon besser aus!

nein ehrlich gesagt habe ich die Tilde bislang ignoriert Was sagt mir denn diese Tilde? Warum wirft die Anführungszeichen weg?

Den "Aufwand" mache ich, da dies ja nur ein Minimalbeispiel ist. Im Endeffekt soll hier ja noch erhebliich mehr gemacht werden.
Bitte warten ..
Mitglied: Skyemugen
03.04.2012 um 11:56 Uhr
Zitat von HuberDe:
nein ehrlich gesagt habe ich die Tilde bislang ignoriert Was sagt mir denn diese Tilde? Warum wirft die Anführungszeichen weg?
        %~1         - Expandiert %1 und entfernt umschließende 
                      Anführungszeichen (").

Weil das so gewollt ist ... call /? anyone?

greetz André
Bitte warten ..
Mitglied: HuberDe
03.04.2012 um 12:05 Uhr
Oje, ist das peinlich Ich bin bis dato noch nicht drauf gekommen in die Call Hilfe zu schauen. Ich dachte das wäre eine allgmeinere Übergabegeschichte. Naja vielen Dank nochmals
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Parameter Argumente Übergabe Problem
gelöst Frage von BloodyRulzBatch & Shell1 Kommentar

Hallo zusammen, ich hoffe ich bekomme hier wieder die gewünschte Hilfe, da ich mit meinen sehr eingeschränkten Batchkenntnissen am ...

Batch & Shell
Anführungszeichen aus übergebenen Parametern entfernen
gelöst Frage von RaidManBatch & Shell2 Kommentare

Hallo Kenner und Könner, bin gerade dabei eine Batch zu basteln die Textdateien (detail infos) ändern soll dazu wollte ...

Windows Server
Parameter Übergabe Terminal Server
gelöst Frage von ThomasKernWindows Server9 Kommentare

Hallo zusammen, ich habe folgendes Problem. Wir führen gerade ein Dokumentenmanagement-System ein welches sehr eng mit unserm WAWI zusammen ...

Batch & Shell
Anführungszeichen in Batch Datei ausgeben
gelöst Frage von AtalicsBatch & Shell6 Kommentare

Guten Abend Leute, ich wollte eine Verknüpfung per CMD erstellen (Code von bastla, funktioniert ohne meine Veränderungen einwandfrei ^^), ...

Neue Wissensbeiträge
Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 5 StundenWindows 101 Kommentar

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 7 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner2 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Brainstorming, einfachste Option 1 getrenntes LAN (mit WAN zugang)
Frage von 132954LAN, WAN, Wireless13 Kommentare

Hi, folgendes: Wir bekommen eine Glasfaser Leitung, Und das sollte Optional so aussehen: Ein Modem/Router für das WAN, ein ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...