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

Frage Entwicklung Batch & Shell

Mitglied: jknapp

jknapp (Level 1) - Jetzt verbinden

05.05.2010, aktualisiert 19:54 Uhr, 7438 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 ...

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 ...

Batch & Shell
Batch-Variable rechnet immer weiter
Frage von ZwergkaninchenBatch & Shell4 Kommentare

Hallo, Leute! Ich wollte mir ein kleines Idle-Game in Batch schreiben, aber ich komm nicht weiter. Hier ist ein ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...