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 IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Variableninhalt im DOS-Batch kürzen

Mitglied: Fusseler

Fusseler (Level 1) - Jetzt verbinden

04.08.2006, aktualisiert 07.08.2006, 15922 Aufrufe, 10 Kommentare

Guten Tag!,
ich habe da beim DOS-Batch ein kleines Problem...
Das Batch bekommt eine Variable %5 durch ein anderes Programm übergeben (dort kann ich leider nicht eingreifen, das mal vorneweg);
diese Variable enthält einen Pfad, der ebenfalls inhaltlich nie gleich ist.
Jetzt wird leider ein " vor und hinter der Pfadangabe mitgeliefert, sodass ich diesen nicht für weitere Funktionen nutzen kann.

Ich versuche, beherrsche aber einfach nicht den set-Befehl von DOS, um die Variable in eine ohne "..." umzubasteln. Aber - es klappt einfach nicht!

Das Anführungszeichen steht immer am Anfang und Ende der Variablen; der Inhalt ist nicht identisch und hat leider auch eine unterschiedliche Länge.

Könnte mir jemand nen Tipp geben?

Vielen Dank!
Mitglied: Biber
04.08.2006 um 11:08 Uhr
Moin Fusseler,

falls es ein Batch diesseits von Win95/98/ME ist:

Demo:

HTH
Biber
Bitte warten ..
Mitglied: Fusseler
04.08.2006 um 11:28 Uhr
Uff. Danke für die schnelle Antwort. Ist übrigens ein 2003-Srv., ist das in diesem Fall nicht unwichtig?
Bitte nicht bös sein - aber ich verstehe die Parameterbehandlung leider nicht - könntest Du das mal kurz kommentieren? Dann würde es mir leichter fallen, die Übertragung auf meine Anwendung vornzunehmen...

Nochmal - besten Dank!

-Fusseler
Bitte warten ..
Mitglied: Biber
04.08.2006 um 11:46 Uhr
Also, Fusseler,

kurz kommentiert:
1)
bitte angewöhnen: DOS-Prompt, DOS-Variablen, DOS-Batch gibt es noch bis inclusive Win95/98/ME. Da hieß den Command-Interpreter noch COMMAND.com wie auch vorher ab DOS 2.0.
Seit Win NT; spätestens aber seit Win2000 gibt es alternativ und als Default die CMD.exe als "Eingabeaufforderung" oder oder "Kommandozeile" oder Shell.
Entsprechend dann die CMD-Variablen etc.

2) Für die CMD.exe sind die Funktionalitäten massiv erweitert worden- und M$ hat öffentlich bekundet, dass wohl doch nicht alles über Klicki-Bunti-GUI abzufackeln ist, speziell beim administrativen Tagesgeschäft.
Bei diesem Vista-Geraffel soll das Ganze mit der Monad-Shell noch einmal einen qualitativen Quantensprung erleben.
[Wenn denn Vista jemals kommt.... *lach*]

3) Was CMD-Variablen angeht, gibt es z.B. bei Eingabe von "SET /?" oder "FOR /?"oder "CMD /?" oder "CALL /?" am CMD-Prompt eine ellenlange und gute (=nicht von M$-Übersetzungsprogrammen generierte) Hilfe.

In den letzten 30 Zeilen der FOR/?-Hilfe steht zum Beispiel:
Ähnliches steht bei CALL /? bezogen auf die Parameter %1....%9
Diese Syntax habe ich oben angewendet.

Thats all.
Gruß
Biber
Bitte warten ..
Mitglied: Fusseler
04.08.2006 um 13:49 Uhr
Hallo Biber,

erstmal - besten Dank! Ich arbeite an meiner Syntax, versprochen!

Ich hätte da jetzt mal jetzt folgenden Batch konstruiert:

@echo off
:: setze umgebungsvariable zum test ::
set "j="c:\temp\datei.txt""

::
echo %j%
echo %~j%

:: öffne die datei und lese aus ::

for "tokens=" %%i in (%~j%) do set "lfdnr=%%i"

:: schreibe die ausgelesen sätze in die datei versand1.txt ::

if exist protokoll.chk echo >> versand1.txt
if exist protokoll.chk echo %lfdnr% >> versand1.txt

Ausgabe:

j="c:\temp\datei.txt" ::soweit ok ::
Die folgende verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig: %~j%) do set "lfdnr=%%i"

Übrigens - anstatt %~j% habe ich %%~j% und %~j versucht... kein Erfolg.

An welcher Stelle ist mein Fehler?
Besten Dank und Gruss,
Fusseler
Bitte warten ..
Mitglied: Biber
04.08.2006 um 14:06 Uhr
Moin Fusseler,

set "j="c:\temp\datei.txt""
hier oben reicht lt. M$-Hilfe auch ein
set j=c:\temp\datei.txt
...was ich immer vermeide, weil sich da möglicherweise ein trailing blank einschleicht.
Ich empfehle immer:
set "j=c:\temp\datei.txt" -->wenn die Variable NICHT in Anführungszeichen sein soll
set j="c:\temp\datei.txt" --> wenn die Variable in Anführungszeichen sein soll

Ich gehe mal bei Dir von einer Variablen in Anführungszeichen aus: [set j="c:\temp\datei.txt" ]
for "tokens=" %%i in (%~j%) do set "lfdnr=%%i"
Hier ist "nur" die Klausel "tokens=" der Fehler.
Diese Klausel gibt es nicht bei einer "reinen" FOR..IN..DO-Anweisung, weil ja bei einen "reinen" FOR..IN..DO..-Anweisung immer eine Aufzählung in der Klammer steht.
In Deinem Fall besteht zwar diese Aufzählung nur aus einem Element ("C:\temp\datei.txt").
Bleibt aber trotzdem eine Aufzählung, für die keine "tokens" oder "Delims" angegeben werden können.

Gruss
Biber
Bitte warten ..
Mitglied: Fusseler
04.08.2006 um 14:24 Uhr
Heydo Biber,

nochmals ich...

also:
set "j="c:\temp\datei.txt"" --> die reine Definition [set j="c:\temp\datei.txt"] habe ich aus Gründen der M$-Recommandation genutzt - und sie liefert den Pfad in der gleichen Form, wie der Parameter beim Batch ankommt: Mit Anführungszeichen.


Als token hatte ich übrigens "tokens=3,24-33" definiert, was direkt aus dem Prompt und mit fixem Pfad in der For-Schleife einwandfrei den Wert liefert, der eben geliefert werden soll...
Problem scheint mir doch eher zu sein, dass ich die Syntax der Variablen immer noch nicht richtig setze - eben (%~j%) ... und deswegen der Pfadoperator als falsch interpretiert wird.

Oder? Mir 8-)

Besten Dank für Deinen Support!,
Fusseler
Bitte warten ..
Mitglied: Biber
04.08.2006 um 14:34 Uhr
Nein, nein, Fusseler...
(leider bin ich kein guter Erklärer, sorry):

Beispiel am Prompt:
Bei einer Variablen %j%, %test% oder %userprofile% kannst Du diese Tilde-Syntax nicht verwenden.
Nur bei dynamischen Variablen, d.h. Zählvariablen einer FOR..IN..DO-Anweisung oder den Inputparametern eines Batches/eines geCALLten Blocks.

Siehe oben - eine Tilde auf die "echte", gesetzte Variable %j% ist wirkungslos.
Eine Tilde bei der Zählvariablen %i funktioniert.

Das Beispiel von oben als Batch mit zwei Prozentzeichen vor den Zählvariablen:
Besser?
Biber
Bitte warten ..
Mitglied: Fusseler
04.08.2006 um 15:17 Uhr
Hey Biber,
Danke für Deine Geduld - scripten war mir schon immer zuwider...

Also, ich glaube das richtige Ergebnis müsste das hier sein:
Im einzelnen Batch hat´s funktioniert - ich atme durch, wenn´s jetzt im Realfall klappt (der leider auf einem Event basiert, den ich nicht steuern kann...)


Falls ich den Thread danach schließen kann:

Danke für Deine Geduld!!!
Fusseler
Bitte warten ..
Mitglied: Fusseler
07.08.2006 um 11:28 Uhr
Also - wunderbar! Der Batchlauf funktioniert reibungslos!

Thread geschlossen, vielen Dank nochmal!
Bitte warten ..
Mitglied: Biber
07.08.2006 um 11:45 Uhr
Moin Fusseler,

freut mich.
Schließe diesen Thread mit Status "Gelöst".

Weiterhin stressarmen Wochenbeginn
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch mehrmals durchlaufen, immer mit anderem Variableninhalt

gelöst Frage von Winfried-HHBatch & Shell2 Kommentare

Hallo in die Runde! Wie kann ich eine Batch mehrfach durchlaufen, und zwar mit einer Parameterliste. Soll heißen: Parameterliste: ...

Batch & Shell

DOS batch Dateinamen mit Umlauten umbennen

Frage von majchoBatch & Shell6 Kommentare

Bei DOS-Batch scripten habe ich immer wieder Probleme mit Umlauten in Dateinamen. Ich würde gerne die Dateinamen temporär umbennenen. ...

Batch & Shell

DOS BATCH (kein SHELL) zum Dateiverschieben nach Dateigrösse

gelöst Frage von tomreisBatch & Shell5 Kommentare

Hallo ich wende mich an die DOS Spezialisten unter Euch. Aufgabe: verschieben (bzw. kopieren und löschen) von Dateien mit ...

Windows 7

Netzwerk Bricht immer wieder kurz zusammen

Frage von auger123Windows 75 Kommentare

Hallo, in Unserer Domäne bricht das Netzwerk immer mal kurz an an den Clients weg, dadurch kommt es in ...

Neue Wissensbeiträge
Off Topic
Wann gibt es mehr Bits als Atome?
Information von AnkhMorpork vor 1 TagOff Topic11 Kommentare

Boys 'n' girls, Freitagslektüre: Wenn Computertechnologie und Digitalisierung sich so weiterentwickeln, könnte die Zahl der digitalen Bits in 150 ...

Sicherheits-Tools

TrendMicro Worry-Free Business Security (WFBS) 10.0 SP1 - Critical Patch veröffentlicht!

Information von VGem-e vor 1 TagSicherheits-Tools3 Kommentare

Servus, siehe hier. Download-Link hier swfbs/10.0WFBS_100_SP1_All_MSA_11.7_HFB1073.exe Nähere Infos habe ich online noch nicht gefunden. Gruß VGem-e

Humor (lol)

Wie verhindere ich, dass Websitebesucher die Werbecookies abschalten?

Information von DerWoWusste vor 3 TagenHumor (lol)9 Kommentare

Ich habe gerade auf die Antwort gefunden: ich täusche einen langwierigen Änderungsprozess vor und biete nebenbei einen Cancelbutton, den ...

Sicherheit

Windows Setup erlaubt elevation of privilege plus DC Updates

Information von DerWoWusste vor 3 TagenSicherheit4 Kommentare

Eine interessante neue Sicherheitslücke. Details gibt es wenig, edit: doch, jetzt hab ich was: aber die klare Empfehlung: ...

Heiß diskutierte Inhalte
Windows Server
MSI Installation als User auf TS funktioniert nicht
Frage von support-itWindows Server17 Kommentare

Guten Tag zusammen, ich habe eine Frage bezüglich der Installation von einer MSI-Datei auf einem Server 2016 Datacenter Terminalserver. ...

Debian
Debian Netzwerk konfiguration
Frage von e60newbieDebian11 Kommentare

Hallo Forum Gemeinde, ich bin neu hier und mich entschlossen zu registrieren. Zum einen habe ich in der Vergangenheit ...

Zusammenarbeit
Leistungskennzahlen in einer Abteilung ermitteln
gelöst Frage von Stefan007Zusammenarbeit11 Kommentare

Hi zusammen, mich beschäftigt eine Frage zum Thema Leistungskennzahlen in einer Abteilung. Unsere Abteilung besteht aus 1st und 2nd ...

Off Topic
Wann gibt es mehr Bits als Atome?
Information von AnkhMorporkOff Topic11 Kommentare

Boys 'n' girls, Freitagslektüre: Wenn Computertechnologie und Digitalisierung sich so weiterentwickeln, könnte die Zahl der digitalen Bits in 150 ...

Administrator Magazin
08 | 2020 Cloud-First-Strategien sind inzwischen die Regel und nicht mehr die Ausnahme und Workloads verlagern sich damit in die Cloud – auch Datenbanken. Dort geht es aber nicht nur um die Frage, wie die Datenbestände in die Wolke zu migrieren sind, sondern auch darum, welche Datenbank ...