Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Variable auslesen und Text ab einem bestimmten Zeichen in eine neue Variable schreiben

Frage Entwicklung Batch & Shell

Mitglied: 3xplor3r

3xplor3r (Level 1) - Jetzt verbinden

13.11.2011 um 14:36 Uhr, 4182 Aufrufe, 7 Kommentare

Hallo liebe Gemeinde,

ich möchte aus einer Variable, die innerhalb einer FOR-Schleife deklariert wird ab einem bestimmten Zeichen den gesamten nachfolgenden Text in die gleiche oder eine andere Variable verschieben.

for /R "%download%" %%i in (*.mp3) do (
for /F "tokens=* delims=\" %%j in ("%%i") do ?)

In dieser geschachtelten FOR-Schleife lese ich alle *.mp3 Dateien ab dem Verzeichnis %download% aus. Jetzt möchte ich diese Dateien noch neu encodieren, was dann an der Stelle des ? folgen würde. Da allerdings x mp3-Dateien verarbeitet werden, bekomme ich ein Problem mit den Dateinamen, da lame nur ein statisches Ausgabeverzeichnis unterstützt.

lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "%%i" "%upload%%%k"

Dieses wäre das %upload%-Verzeichnis bspw. C:\Dokumente und Einstellungen\Upload. Nun würde das Encodieren dazu führen, dass eine mp3-Datei mit dem Namen Upload.mp3 in diesem Verzeichnis erzeugt werden würde. Daher jetzt der Gedanke, dass ich in die Variable %%k den Dateinamen des Musikstückes speichere. Die Musikdatei liegt bspw. im Verzeichnis C:\Dokumente und Einstellungen\Download\Titel1.mp3. Dazu wird nun der Teil benötigt, der hinter dem letzten \ steht. Mit anderen Worten muss ich das letzte \ oderr wenn man von hinten liest das erste \ finden und dann den Text der dahinter oder davor folgt in eine neue Variable speichern, es kann auch die gleiche sein, falls technisch möglich.

Darauf hin könnte ich beim Aufruf von lame für das Ausgabeverzeichnis diese Variable anhängen, wodurch der Name des Titels gleich bleibt.

Nur weiß ich im Moment noch nicht, wie ich das realisieren könnte.

LG
3x
Mitglied: pieh-ejdsch
13.11.2011 um 15:36 Uhr
moin 3xplor3r,

wenn Du bestimmte Befehle an der CMD benutzt - hilft bei Problemen die ...

... ja die Hilfe (gleich mit den Expandierten ausortiert)
01.
for/?|find /i "%~nxI"
Friemler hat das hier im Tutorial zur FOR-Schleife nochmal zusammengefasst.

Gruß Phil
Bitte warten ..
Mitglied: Biber
13.11.2011 um 15:38 Uhr
Moin 3xplor3r,

willkommen im Forum.

Wenn ich deine Anforderung richtig verstanden habe, dann ist keine Zwischenvariable nötig.
Ich würde es nach folgendem proof of concept am CMD-Prompt umsetzen:
[Anmerkung: Da du so lange Pfade verwendest, sollest du dir mit "Set mode con cols=166 lines=55" ein weing Platz zum Testen schaffen]
>set "lameparms=-b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief" 
 
(=15:25:40  d:\Biber\temp=) 
>set "upload=x:\oder y\upload" & set "download=C:\Dokumente und Einstellungen\Download" 
 
(=15:25:55  d:\Biber\temp=) 
>@for /R "%download%" %i in (*.mp3) do @echo DEMO: lame %lameparms% "%~i" "%upload%\%~nxi" 
DEMO: lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "C:\Dokumente und Einstellungen\Download\Der letzte Titel.mp3" "x:\oder y\upload\Der letzte 
tel.mp3" 
DEMO: lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "C:\Dokumente und Einstellungen\Download\Der Titel 1.mp3" "x:\oder y\upload\Der Titel 1.mp3" 
DEMO: lame -b 192 -B 256 -m j -V 2 -h --vbr-new -t --priority 4 --brief "C:\Dokumente und Einstellungen\Download\Der Titel 2.mp3" "x:\oder y\upload\Der Titel 2.mp3"
Sollte also mit dem Einzeiler, der mit "@FOR /R "%download%"...." beginnt nach Definition der drei Variablen ohne weiteren Heckmeck ausreichen.

Grüße
Biber
Bitte warten ..
Mitglied: 3xplor3r
13.11.2011 um 17:10 Uhr
Hallo Biber,

danke erstmal für Deine Antwort. Ich habe zum Test

@for /R "%download%" %%i in (*.mp3) do echo "%%i\%~nxI"

in die Batch-Datei eingetragen. Als Ausgabe hätte ich bspw. Der Titel 1.mp3 erwartet. Leider konnte die Batch-Datei nicht ausgeführt werden. Lasse ich %~nxI weg, wird der gesamte Pfad ausgegegben.
Bitte warten ..
Mitglied: Biber
13.11.2011 um 17:19 Uhr
Moin 3xplor3r,

in einer Batchdatei müssen die Prozentzeichen bei allen Laufvariablen verdoppelt werden, also auch %%~nxi (statt %~nxi).

Und bitte beachten: bei diesen dynamischen Variablen wird zwischen Klein- und Grossschreibung unterschieden, also ist %i <>%I (oder %a<>%A)

Grüße
Biber
Bitte warten ..
Mitglied: 3xplor3r
13.11.2011 um 18:49 Uhr
Ahh das habe ich übersehen, danke Dir. Die folgende Lösung funktioniert so wie sie soll.

@for /R "%download%" %%i in (*.mp3) do lame %lame% "%%i" "%upload%\%%~nxi"

So werden die Dateien in das Verzeichnis %upload%\01 Der Titel.mp3 geschrieben.
Bitte warten ..
Mitglied: Skyemugen
14.11.2011 um 07:48 Uhr
[OT]Aloha Jungs!

Was'n los hier, seht ihr schon Dinge, die nicht da sind oder warum gibt niemand dem TE den Vorschlag zur Ansichtsverbesserung der Skriptschnipsel im Forum per <code></code> Codeformatierung?

Ihr lasst nach

greetz André[/OT]
Bitte warten ..
Mitglied: Biber
14.11.2011 um 08:07 Uhr
[OTii]
Zitat von Skyemugen:
[OT]Aloha Jungs!

Was'n los hier, seht ihr schon Dinge, die nicht da sind oder warum gibt niemand dem TE den Vorschlag zur Ansichtsverbesserung
der Skriptschnipsel im Forum per <code></code> Codeformatierung?
Haben wir gesehen. Das Verfahren wurde wegen Geringfügigkeit eingestellt.
... drei verschüchterte skizzerten Halbzeilen.... Schwamm drüber.

Zudem hat er das noch gestern am späten Nachmittag auch von bastla aufs Brot bekommen.

greetz André[/OT]
Grüße zurück
Biber
[/OTii]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Text Datei bestimmte Bereiche lesen und in neue Text schreiben (3)

Frage von TurboD zum Thema Batch & Shell ...

Batch & Shell
gelöst In einer Batch-Datei einen variablen Teil eines Dateinamens auslesen (5)

Frage von dh0815 zum Thema Batch & Shell ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Neue Wissensbeiträge
Viren und Trojaner

Link: Neues Botnetz über IoT-Geräte

Information von certifiedit.net zum Thema Viren und Trojaner ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Switche und Hubs
gelöst VLAN für Gäste WLAN einrichten über FritzBox und Switch (10)

Frage von Elo-14 zum Thema Switche und Hubs ...

Windows Server
Frage zu Server Rack (10)

Frage von rainergugus zum Thema Windows Server ...