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

Hilfe bei Konvertierung von Klein- in Großbuchstabe

Mitglied: 18392

18392 (Level 1)

09.10.2005, aktualisiert 12.10.2005, 15945 Aufrufe, 7 Kommentare

Eine Variable soll von Kleinbuchstaben in Großbuchstaben geändert werden

Hallo zusammen!

Ersteinmal einen angenehmen Sonntag euch allen. Ich bin gerade dabei eine Batch zu schreiben, die ein paar Dateien herunterläd, diese dann entpackt, weiter verarbeitet und dann auf eine Unix Maschine hochläd. Der Knackpunkt ist das Hochladen, da die Datei, die dort hochgeladen werden soll, Großgeschrieben werden muss. Ich habe keine Ahnung wie ich eine Datei in Großbuchstaben wandle.

Nehmen wir an, ich habe die Dateien test.txt und test2.txt. Die sollen von a nach b kopiert werden und dabei von klein test auf groß TEST geändert werden.

Dateien liegen im Verzeichnis: c:/temp und sollen nach d:/temp. Da es sich dabei um Dateien handelt, die sich nur beim Basename ändern, ist die Extension egal. In meiner Batch deklariere ich eine Variable, die meine ganzen Namen enthält, die ich nachher bearbeiten will.

Beispiel:
VAR1=test test2

Theoretischer Ansatz: for %i in %VAR1% do %i > %I

Rauskommen soll dann: VAR2=TEST TEST2


Wäre klasse, wenn mir jemand mit Rat und Tat zur Seite stehen könnte. Ich hoffe es ist gut beschrieben.

Dank euch,
Dirk
Mitglied: Biber
09.10.2005 um 16:21 Uhr
Moin, JimsKnopf,

ich hasse Batch-Anforderungen, die ich nicht mit einem Oneliner beantworten kann...

Den umgekehrten Fall (alle Dateien in Kleinbuchstaben umwandeln) hätte ich mit einem Einzeiler erschlagen können
01.
for /F %i in ('dir /b /l *.*') do ren %i %i
...aber nein, Du brauchst ja GROSS-Buchstaben..*grummel*

Gute Nachricht zwichendurch: Du hast es hervorragend beschrieben.
Hab ich auch verstanden, denke ich. In meinen Beispielen schreibe ich trotzdem den UPPER-Text wieder in %VAR1% statt in eine zweite Variable Var2.

Also: Es gibt vom Command-Prompt aus KEINE Möglichkeit, Strings in UPPER oder Lower umzuwandeln.

Wenn man/frau es trotzdem tun muss, würden mir folgende Alternativen einfallen:

a) Über native commands, also über das, was M$ uns bereitstellt (MacGyver-Variante )
Jedes gottverdammte Zeichen in dem umzuwandelnden String einzeln anfassen und übersetzen:
01.
::--------Snipp MacGyversToUpper.bat---------- 
02.
@echo off 
03.
:: Annahme: Deine %Var1% ist normalerweise schon vorher gesetzt.  
04.
:: Zum Spielen setz ich sie mal hier 
05.
Set Var1="kleindatei1 GemischteDatei2 whatever3" 
06.
set Var1=%Var1:a=A%  
07.
set Var1=%Var1:b=B%  
08.
set Var1=%Var1:c=C%  
09.
set Var1=%Var1:d=D%  
10.
set Var1=%Var1:e=E%  
11.
set Var1=%Var1:f=F%  
12.
set Var1=%Var1:g=G%  
13.
set Var1=%Var1:h=H%  
14.
set Var1=%Var1:i=I%  
15.
set Var1=%Var1:j=J%  
16.
set Var1=%Var1:k=K%  
17.
set Var1=%Var1:l=L%  
18.
set Var1=%Var1:m=M%  
19.
set Var1=%Var1:n=N%  
20.
set Var1=%Var1:o=O%  
21.
set Var1=%Var1:p=P%  
22.
set Var1=%Var1:q=Q%  
23.
set Var1=%Var1:r=R%  
24.
set Var1=%Var1:s=S%  
25.
set Var1=%Var1:t=T%  
26.
set Var1=%Var1:u=U%  
27.
set Var1=%Var1:v=V%  
28.
set Var1=%Var1:w=W%  
29.
set Var1=%Var1:x=X%  
30.
set Var1=%Var1:y=Y%  
31.
set Var1=%Var1:z=Z%  
32.
:: ~~~~~ %Var1% ist jetzt "KLEINDATEI1 GEMISCHTEDATEI2 WHATEVER3"
::----------Snapp MacGyversToUpper.bat
Diese Mimik funktioniert natürlich, hat aber die spielerische Eleganz eines Sat1-Nachmittags-Talks.
Habe ich auch nur der Vollständigkeit gepostet.


b) Umwandeln der Strings in UPPERCASE/lowercase über irgendwelchen Freewarequatsch.

Den gibt es natürlich. Aber höchst inkompatibel (Umlaute) und inflexibel. Und Du brauchst eben ein Zusatzutility, wo auch immer dein Batchlet laufen soll.
Den Weg hab ich nicht weiter verfolgt (kannst aber gerne Gogglen. Gibt eimerweise solche Tools).


c) Aufruf von vorhandenen Konvertierungsroutinen in JScript/VBSkript

Das wäre schon eher ein Weg, mit dem ich liebäugeln würde: Im Batch selbst einen VB- oder JScript-Schnipsel erzeugen und den aufrufen.

Das würde ungefähr so laufen können:

Beispiel JS-Schnipsel aus *.Bat erzeugen und aufrufen:

::
01.
--------Snipp MakeUpperJS.bat 
02.
@echo off 
03.
::Variante der UpperCase-Umwandlung mit JScript; 
04.
Set ToUpperjs=%temp%\%random%.js 
05.
echo var StrToConv = "%*"; >%ToUpperjs% 
06.
echo WScript.Echo(StrToConv.toUpperCase());>>%ToUpperjs%  
07.
cscript //nologo %ToUpperjs% 
08.
::-------Snapp  MakeUpperJS.bat

Beispiel VBS-Schnipsel aus *.Bat erzeugen und aufrufen:
::
01.
-------Snipp MakeUpperVBS.Bat 
02.
@echo off 
03.
:: ToUpper-VBS-Snippet... wandelt einen übergebenen Parameter in UPPER-Text um 
04.
Set ToUppervbs=%temp%\%random%.vbs 
05.
echo StrToConv = wscript.arguments.item(0) >%ToUppervbs% 
06.
echo WScript.Echo( UCase(StrToConv))>>%ToUppervbs% 
07.
cscript //nologo %ToUppervbs% %1 
08.
::-------Snapp MakeUpperVbs.bat

...oder, wenn ich das Ganze mal anwende auf Deine %Var1%:
::
01.
---------snipp MakeVar1Upper.bat 
02.
@echo off 
03.
:: ToUpper-VBS-Snippet... wandelt einen übergebenen Parameter in UPPER-Text um 
04.
Set ToUppervbs=%temp%\%random%.vbs 
05.
echo StrToConv = wscript.arguments.item(0) >%ToUppervbs% 
06.
echo WScript.Echo( " " ^& UCase(StrToConv))>>%ToUppervbs% 
07.
 
08.
:: Hier geht es eigentlich los 
09.
:: Folgende Zeile nur zum Test; var1 sollte VORHER outside of Batch gesetzt sein 
10.
Set "var1= kleindatei1 GemischteDatei2 whatever3" 
11.
Echo Var1  vorher: %var1% 
12.
Set "Var2=" 
13.
:: In Var2 sollen die geUpperten Strings rein 
14.
For %%i in (%var1%) do call:ToUpper %%i 
15.
:: in Var2 steht nun der GROSS-Text 
16.
Set "Var1=%Var2%" 
17.
echo Var1 nachher: %var1% 
18.
:Cleanup 
19.
del %ToUpperVBS% 
20.
goto :eof 
21.
~~~~~~ Ende der eigentlichen Batchs 
22.
 
23.
::~~~hier noch die Winzroutine ToUpper 
24.
:ToUpper 
25.
for /f "tokens=2" %%a in ('cscript //nologo %ToUppervbs% %1') do ( 
26.
        set "Var2=%Var2% %%a"  
27.
28.
goto :eof 
29.
:: ---------snapp MakeVar1Upper.bat
Output, wenn ich das aufrufe:
01.
>MakeVar1Upper.bat 
02.
Var1  vorher:  kleindatei1 GemischteDatei2 whatever3 
03.
Var1 nachher:  KLEINDATEI1 GEMISCHTEDATEI2 WHATEVER3
d) Oder du machst einen Einzeiler auf Unix-Seite statt auf dem Windows-Rechner:
01.
 for name in * ; do mv -i $name `echo $name | tr [a-z] [A-Z]` ; done. 

oder (etwas lesbarer)
01.
 for name in * ; do mv -i $name `echo $name | tr [:lower:] [:upper:]` ; done. 
(Soweit ich es im Kopf habe... habe grad keinen Unix-Rechner so Hause. Sollte aber nah dran sein.)

HTH & HAND
Frank / der Biber aus Bremen

[Edit]
Für diejenigen, denen "MacGyver" nichts sagt: Das war eine US-Amerikanische B- oder C-Fernsehserie, deren Titelheld, ein grenzenlos optimistischer Bastler, sich in jeder Folge in einer absolut ausweglosen Situation wiederfand. Also mit Handschellen an die Gleise gekettet vor einem heranbrausenden ICE oder ähnliches. Aber dann (Fanfare aus dem Off) geht ein Leuchten über sein Gesicht, weil er gänzlich unerwartet ein Stückchen Bindfaden und eine Spiegelscherbe in der Tasche findet und weiß: Alles wird gut, damit komm ich hier raus.
Ist eine Einstellung, die auch beim Bätche-Schreiben nicht verkehrt ist.
[/Edit]
[Edit II]
Aufgrund neuerer Erkenntnisse MacGyvers Namen nun richtiger geschrieben.
[/Edit II]
Bitte warten ..
Mitglied: 18392
10.10.2005 um 14:57 Uhr
Supi, dank dir für die doch sehr ausführliche Beschreibung! Hätte dir je gerne einen Einzeiler gegönnt, aber warum einfach, wenn man es schwer haben kann. Deine Ergänzung zu MacGuyver ist für die Unwissenden unter uns, sicher sehr hilfreich ;) Aber mal ehrlich, wer kennt ihn nicht, den Mann der aus Kaugummis Bomben baut *g*
Bitte warten ..
Mitglied: Biber
11.10.2005 um 17:45 Uhr
Tja, JimsKnopf,

wir alle kennen ihn, aber wie er sich nun richtig schreibt, das weiß keiner....*gg
Ich habe beim Schreiben meiner Antwort oben auch vollkommen verunsichert über Suchmaschine nachgeprüft (ich hatte erst "MacGuywer" dort stehen, aber das sah auch irgendwie komisch aus..)
Na ja, im Internet gibt es ihn jedenfalls in allen Schreibweisen. Plus einige, auf die ich nie gekommen wäre ("MagGuywer" zum Beispiel)
Sonst genau wie hier im Thread - zum Teil unterschiedlich geschrieben auf der selben Seite...

Eigentliche Frage: läuft es denn inzwischen bei Dir mit einer der vorgeschlagenen Strategien?
Bitte warten ..
Mitglied: 18392
12.10.2005 um 10:26 Uhr
Jip, es läuft! Ich habe mich für deinen Einzeiler entschieden und mein Skript umgebaut, dann werden die halt ersma groß eingelesen und hinterher mach ich sie einfach klein. Der Weg schien mir doch der einfachste Ich wollte schließlich kein J oder VBSkript. Ich liebe es, wenn man alles mit einer Sprache erschlagen kann. Auf der Linuxebene hab ich keinen Streß, da hat man ja für jede Schweinerei ne Möglichkeit, aber bei Windows ist man doch irgendwie eingeschränkt oder es fällt einem gerade nicht der richtige Parameter ein. Also nochmals vielen Dank!
Bitte warten ..
Mitglied: Biber
12.10.2005 um 11:16 Uhr
Dafür nich'...

Den Einzeiler fand ich auch am verlockendsten, aber der hilft ja nur in Deinem ganz speziellen Fall. Ich dachte, falls jemand anderes diese Klein/Groß-Umwandlung braucht und nur Windows als Spielwiese hat...

Aber kannst mir auch einen Gefallen tun... finde doch mal bitte raus, wie sich dieser oben erwähnte Bastler nun tatsächlich schreibt... da hab ich immer noch keine Lösung.

HAND Frank
Bitte warten ..
Mitglied: 18392
12.10.2005 um 11:44 Uhr
Also ich habs gefunden: MacGyver
Hier ein Link http://www.amazon.de/exec/obidos/ASIN/B0007URSP8/wunschliste/028-946163 ...

Das ist unser allseits Bekannter Bastelkönig. Der Held unter den Extremtüftlern
Bitte warten ..
Mitglied: Biber
12.10.2005 um 11:52 Uhr
Danke!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Kleine Hilfe
gelöst Frage von MarabuntaBatch & Shell1 Kommentar

Hi, ich will die Pfade von Prozessen die mit L beginnen und ein Get-ChildItem auf deren Ordner machen. Allerdings ...

Batch & Shell
Kleine Hilfe mit BAT-Dateien
gelöst Frage von DerFragenSteller01Batch & Shell9 Kommentare

Hallo Liebes Administrator-Team; Ich bin 16 Jahre alt und gehe zur Zeit in die Schule. (Realschulabschluss) und ich beschäftige ...

Microsoft Office

Wie kann man in Excel in einer Zelle alle Großbuchstaben finden und farbig machen?

gelöst Frage von Rene1976Microsoft Office7 Kommentare

Hallo, wie kann man in Excel in Zellen alle Großbuchstaben finden und farbig machen? Beispiel: In der Zelle A1 ...

Netzwerkmanagement

Netzwerk für kleine Firma als Laie aufbauen - bitte um Hilfe

Frage von stephan902Netzwerkmanagement40 Kommentare

Hallo, ich muss für eine kleine Firma ein Netzwerk aufbauen. Prinzipiell werden aktuell nicht viele Personen das Netzwerk benutzen ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 11 StundenWindows 103 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 14 StundenAdministrator.de Feedback10 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 1 TagHumor (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 1 TagGoogle 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
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

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

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...