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 Batch, verschachtelte Variable

Mitglied: jknapp

jknapp (Level 1) - Jetzt verbinden

05.05.2010, aktualisiert 19:54 Uhr, 7528 Aufrufe, 7 Kommentare

Hallo Admins,

leider bekomm ich es mal wieder ned auf die Reihe.

Ich versuche einen Text in einer Variablen zu kürzen, anhand einer vorher automatisch ermittelten Anzahl von Zeichen.
Dafür muss ich 2 Variablen verschachteln und habe mich schon dusselig gegoogelt und rumprobiert, aber es geht einfach ned...


Hier mein Code, der nicht funktioniert:

01.
rem ##Teil 1, funktiniert soweit gut... ## 
02.
echo off 
03.
set str=Verkäufer: Firma Mustermann, John Nr.: 86 
04.
set #=%str% 
05.
set length=0 
06.
:loop 
07.
if defined # (set #=%#:~1%&set /A length += 1&goto loop) 
08.
echo %length% 
09.
echo on 
10.
 
11.
rem ##Teil 2, funktiniert auch... ## 
12.
set /A lenght = %length%-(8+11) 
13.
echo %lenght% 
14.
pause 
15.
 
16.
rem ##Teil3, funktioniert...## 
17.
set str=%str:~11% 
18.
echo %str% 
19.
pause 
20.
 
21.
rem ## Und hier komm ich ned weiter, vorher ergibt das echo von %str% ein  "Firma Mustermann, John Nr.: 86", wie gewünscht. 
22.
set str=%str:~0,%length%%  
23.
 
24.
echo Dateiname:%str% 
25.
rem ## Da kommt jetzt nur noch Müll raus !

Ich bin mir sicher, dass die Lösung super einfach ist, aber...
Wenn ich das letzte %Length% durch die richtige Zahl ersetze funktioniert es wunderbar
Varianten mit [... _...] etc. habe ich versucht aber komme nicht weiter.

Jemand eine Idee ? Danke schonmal !!!

Jochen
Mitglied: 60730
05.05.2010 um 18:30 Uhr
Servus,

jetzt nimst du mal deinen Code und postest den innerhalb der dafür vorgesehenen Codeblöcke und dann kann man das auch lesen.

btw: meine Vorliebe für "problembatche, die mit einem führenden echo off anfangen, sollte sich sogar schon in Lampukistan herumgesprochen haben.

Gruß

Ps: Wer es schafft eine Variable set str=%str:~0,%length%% mit einer anderen gleichbenamsten Variable neu zu setzen bekommt eine runde Bier nach Wahl spendiert.....
Bitte warten ..
Mitglied: jknapp
05.05.2010 um 20:22 Uhr
Hallo TimoBeil,

deinem Wunsch, das ganze in einem Codeblock zu posten, komme ich gerne nach, sorry für das Versäumnis.

Das mit dem Echo off darfst du getrost vergessen, weil lange vor dem "Problemteil" ein Echo on folgt.
Das habe ich nur aus performancegründen gemacht. teste es ohne und du weisst was ich meine ! ;o)

Es gibt auch keine Fehlermeldung, sondern nur nicht das gewünschte Ergebnis.

deinen EInwand mit der gleichbenamten Variable versteh ich leider nicht, denn

01.
set str=%str:~0,22%
geht doch einwandfrei !

Sorry, entweder ich bin zu doof dafür, oder ich bekomm ein Bier von dir ! ;O)
Bitte warten ..
Mitglied: bastla
05.05.2010 um 20:27 Uhr
Hallo jknapp und Timo!

Da ich kein Bier trinke, außer Konkurrenz (zur Verwendung in einem Batch):
call set "str=%%str:~0,%length%%%"
Grüße
bastla
Bitte warten ..
Mitglied: Biber
05.05.2010 um 20:52 Uhr
Moin jknapp, T-Mo & bastla,

und wenn die DelayedExpansion immer aktiviert ist, geht der proof-of-concept auch als Oneliner am CMD-Prompt.
(=20:50:55  D:\temp=) 
>set "BiberStr=MfG Biber" & set "len=4" & Set "BiberStr=!BiberStr:~%len%!" & set BiberStr 
BiberStr=Biber
Bier muss auch nicht unbedingt sein, aber wenn, dann bitte ein Becks.

Grüße
Biber
Bitte warten ..
Mitglied: jknapp
05.05.2010 um 21:35 Uhr
So, danke Ihr !
Bin ja ganz geplättet gleich von mehreren "Administrator.de Promis" supportet zu werden !

Hier nochmal eine etwas laufzeitoptimierte und Fehlerbereinigte Variante, die auch funktioniert.

01.
set str=Verkäufer: Firma Knapp, Jochen Nr.: 86 
02.
rem ### Entferne 11 Zeichen von links  
03.
set str=%str:~11%  
04.
rem ### Ermitteln der Länge des Rest-Strings 
05.
echo off  
06.
set #=%str%  
07.
set xlang=0  
08.
:loop  
09.
if defined # (set #=%#:~1%&set /A xlang += 1&goto loop)  
10.
echo länge des Strings: %xlang% 
11.
echo on  
12.
rem ### Festlegen der Länge des auszuschneidenden Strings von links (xlang minus unerwünschte Zeichen von Rechts) 
13.
set /A xlang = %xlang%-9 
14.
rem ### Extrahiere "xlang-Zeichen" von links, rest entfällt. 
15.
call set "str=%%str:~0,%xlang%%%" 
16.
rem ### Gebe Ergebnis aus 
17.
echo %str% >>Ergebnis.log
...vielleicht kann ja noch jemand was damit anfangen...

jochen
Bitte warten ..
Mitglied: LotPings
05.05.2010 um 23:00 Uhr
Hallo Jochen,
es geht doch, wenn man so schwierige Englische Worte wie length nicht mit lenght verwechselt und etwas deutsch Klingendes verwendet

Gruß
LotPings
Bitte warten ..
Mitglied: jknapp
05.05.2010 um 23:08 Uhr
Hallo LotPings,

hast schon nicht unrecht, auch wenn das nicht das eigentliche Problem war, sonder nur eine Unstimmigkeit, die ich nach dem problemlösenden Hinweis von Bastla schnell gelöst habe.

Aber da war wohl der Wunsch Vater des Gedankens, denn wenn es so Funktionen die length, left und right bei Batch-Files gäbe wäre ich in ein paar
Minuten mit der ganzen Sache fertig gewesen. ;O)

Gruß

Jochen
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Verschachtelte For Schleife für Batch Neuling

Frage von yperiuBatch & Shell3 Kommentare

Hallo liebe Profis, ich habe eine sehr umfangreiche Benchmark-Schleife zum Laufen zu bringen, die ich ohne For 72 mal ...

Batch & Shell

Batch - Variablen

gelöst Frage von Marlon1Batch & Shell2 Kommentare

Hallo, Ich habe eine Frage zu Variablen. Und zwar ob es irgendwie geht das Batch mit ein IF Befehl ...

Microsoft Office

Verschachtelte wenn Funktion

gelöst Frage von PeppinoMicrosoft Office4 Kommentare

Hallo zusammen, ich würde gerne folgenden Output haben (Budget und Ausgabencontrolling): Angenommen ich habe ein Budget von 10.000Euro. jetzt ...

Visual Studio

Verschachtelte Arrays

gelöst Frage von MarcoBornVisual Studio19 Kommentare

Hallo Forum, ich habe in VB.NET 6 Arrays, die alle dieselbe Länge, aber unterschiedliche Datentypen haben. Array1 ist vom ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Windows Server
NTFS Berechtigungen Ordnerstruktur
Frage von hukahu23489Windows Server11 Kommentare

Hallo, ich bin seit kurzem in einer neuen IT-Abteilung und bin über das Berechtigungskonzept des Unternehmens sehr schockiert. Ich ...

Exchange Server
NDR umleiten
Frage von isomasterExchange Server10 Kommentare

Hallo Kollege, ich habe ein Problem mit dem Exchange Server. Wir haben unsere info@ Adresse als Verteilergruppe eingebunden (so ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...