Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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 und HTA Orderstruktur

Frage Entwicklung Batch & Shell

Mitglied: araBonG

araBonG (Level 1) - Jetzt verbinden

20.05.2010, aktualisiert 18.10.2012, 3627 Aufrufe, 17 Kommentare

Hallo Leute

Ich habe eine Musiksammlung in einem Ordner "Musik" immer mit der Struktur "Interpret\Album". Nun möchte ich gerne etwas mehr Übersicht haben, mir fehlen aber 2 wichtige Sachen.

Batchteil:

Erstellung einer Art "Datenbank"

1. Schritt
-soll alle Ordner der ersten Ebene (Interpreten) verarbeiten
-soll diese in Textdateien schreiben (A/Ä, B, C,.... O/Ö,.... U/Ü,....0-9) mit <option value="0+1">Interpret</option>
2. Schritt
-soll alle Ordner der zweiten Ebene (Alben) verarbeiten
-soll zu jedem Interpreten eine Textdatei mit einer Liste der Alben erstellen


HTA-Teil

-eine Listbox (<select name="Interpreten" size=10></select>)
-die Options aus der jeweiligen Textdatei (Buchstaben fest definiert)
-eine zweite Listbox, die die Alben des gewählten "Interpreten XYZ" anzeigen
-hier sollen dann die Alben aus der Datei "Interpret XYZ.txt" geholt werden.


Könnte mir jemand hierbei helfen?
Am wichtigsten wäre hierbei der Batchteil, weil ich den mit HTA noch anders lösen könnte.
Das mit Batch sollte ja klappen nur komm ich einfach nicht drauf...

Würde mich freuen wenn mir hier einer wirklich weiterhelfen kann!

Mit freundlichen Grüßen
araBonG
Mitglied: 60730
20.05.2010 um 18:00 Uhr
Moin,
schau doch mal die Anleitung von Edi an.

Gruß
Bitte warten ..
Mitglied: bastla
20.05.2010 um 19:19 Uhr
Hallo araBonG!

Abgesehen von Timos Hinweis sollten sich die Listen so erstellen lassen:
01.
@echo off & setlocal 
02.
set "Basis=D:\Musik" 
03.
 
04.
for /f "tokens=3 delims=. " %%i in ('chcp') do set "CP=%%i" 
05.
chcp 1252>nul 
06.
 
07.
pushd "%Basis%" 
08.
for /d %%i in (*.*) do set "Interpret=%%i" & call :ProcessDir 
09.
for %%i in (?.txt) do for /f "usebackq tokens=2 delims=<>" %%a in ("%%i") do dir /b /ad /on "%%a\*.*">"%%a.txt" 
10.
popd 
11.
chcp %CP% >nul 
12.
goto :eof 
13.
 
14.
:ProcessDir 
15.
set "Interpret=%Interpret:&=^&%" 
16.
>>"%Interpret:~,1%.txt" echo ^<option value="0+1"^>%Interpret%^</option^> 
17.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Edi.Pfisterer
20.05.2010, aktualisiert 18.10.2012
Aloha!
Danke für die Empfehlung meiner Anleitung, ehrt mich sehr..

btw, es gibt hier noch eine 2. "Anleitung", die nur eine Erweiterung der oben genannten darstellt.
Die Erweiterung besteht darin, dass die Inhalte auch gleich in eine Access-DB geschrieben werden.
Dort auf die Schnelle ein paar Abfragen gebastelt (oder eine hta, damit Access nicht installiert sein muss) und dann sollte Dein Wunsch eigentlich erfüllt sein...

Der Vorteil besteht darin, dass hier auch ID3-Tags verarbeitet werden...
Falls Du auf die Inhalte - also die Titel - innerhalb der Alben verzichten willst, wirfst Du einfach die Funktion Detail raus (zumindest soweit ich das auf die Schnelle überblickt habe)
(Kannst sie aber auch drin lassen, tut nicht weh und kann ja mal Sinn geben für eine Abfrage, auf welchem Sampler welcher Titel gespeichert ist...)

btw:
Das Problem an Deiner Lösung könnte sein, dass Du im Laufe der Zeit doch ein paar 100 txt-Files zusamen bekommst... (oder mehr, je nachdem, wie fleissig Du die von Dir gekauften CDs sicherst...). Ist aber letztendlich Geschmackssache...

Falls Du Hilfe beim Erstellen Deiner Lösung brauchst:
Feel free!

lg und gutes Gelingen
Edi

btw: ein paar meiner Schüler basteln grad an einer Lösung, bei der letztendlich ASP bzw. PHP-Seiten rauskommen sollen...
Ist für ein Theater, das ein Mehrplatzsystem für die Recherche nach vorhandenen Soundfiles (Gewitter, Autostarten, Telefonkklingeln, etc) braucht
Das wird aber noch einige Zeit dauern...
Bitte warten ..
Mitglied: araBonG
27.05.2010 um 13:00 Uhr
Danke für eure Hilfe! Bin damit schon sehr weit gekommen, ich habe nur noch ein einziges Problem:

Wie schaffe ich es mit dem Codeschnipsel von Bastla, das a, A, ä, Ä in A.txt reinkommen und b, B in B.txt usw.??? Kann mir da noch jemand bei helfen???
Bitte warten ..
Mitglied: bastla
27.05.2010 um 14:40 Uhr
Hallo araBonG!

Wie sieht Dein Ergebnis bisher aus? Die Umlaute sind (noch) ein Thema für sich, aber der Rest sollte eigentlich funktionieren ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
27.05.2010 um 18:28 Uhr
Mit leicht erweiterter Sub :ProcessDir sollte das doch auch klappen
:ProcessDir 
set "Interpret=%Interpret:&=^&%" 
Set "Anfang=%Interpret:~,1%" 
Set "Anfang=%Anfanga:Ä=A%" 
Set "Anfang=%Anfanga:ö=O%" 
Set "Anfang=%Anfanga:ü=U%" 
>>"%Anfang%.txt" echo ^<option value="0+1"^>%Interpret%^</option^>  
Goto :Eof
Gruß
LotPings
Bitte warten ..
Mitglied: bastla
27.05.2010 um 18:36 Uhr
Hallo LotPings!

Keine Frage (ich hatte nur mal schnell die "Basisversion" versucht) - aber wenn angeblich schon die Originalfassung nicht tut ...

Grüße
bastla
Bitte warten ..
Mitglied: araBonG
28.05.2010 um 12:54 Uhr
Also so sieht der Code bis jetzt aus:

zur Erläuterung: "folder" und "instfr" beinhalten einmal den Musikordner und einmal den Installationsordner.
die Ergänzung <option...onclick...> soll nachher den 2 Frame erneurn in dem die Alben angezeigt werden.
was leider auch nicht klappt (Zeile 10) ist, dass an jedes Zeilenende <p></p> angehängt wird.
01.
@echo off & setlocal 
02.
for /f "tokens=1 delims=$" %%i in (config.cfg) do set "folder=%%i" 
03.
for /f "tokens=2 delims=$" %%i in (config.cfg) do set "instfr=%%i" 
04.
del /f /q /s %cd%\DBhtm\*.htm 
05.
set counter="0" 
06.
for /f "tokens=3 delims=. " %%i in ('chcp') do set "CP=%%i" 
07.
chcp 1252>nul 
08.
pushd "%folder%" 
09.
for /d %%i in (*.*) do set "Interpret=%%i" & call :ProcessDir 
10.
for %%i in ("%instfr%\DBhtm\"?.htm) do for /f "usebackq tokens=2 delims=<>" %%a in ("%%i") do dir /b /ad /on "%%a\*.*" && echo ^<p^>^</p^>>"%instfr%\DBhtm\albums\%%a.htm" 
11.
popd 
12.
chcp %CP% >nul 
13.
goto :eof 
14.
 
15.
:ProcessDir 
16.
set "Interpret=%Interpret:&=^&%" 
17.
set /A counter=%counter%+1 
18.
>>%instfr%\DBhtm\"%Interpret:~,1%.htm" echo ^<option value="%counter%" onclick="javascript:top.albums.location.href='albums/%Interpret%.htm'"^>%Interpret%^</option^> 
19.
goto :eof
Bitte warten ..
Mitglied: bastla
28.05.2010 um 14:41 Uhr
Hallo araBonG!

Nur zur Sicherheit: Wird für %instfr% ein vollständiger Pfad aus "config.cfg" ausgelesen?
Auf jeden Fall könntest Du zum Testen die Zeilen 2 und 3 durch unmittelbare Zuweisung eines Pfades an die Variabeln %folder% und %instfr% ersetzen.

Leicht überarbeitet,aber ungetestet könnte der Batch so aussehen:
01.
@echo off & setlocal 
02.
::for /f "tokens=1 delims=$" %%i in (config.cfg) do set "folder=%%i" 
03.
::for /f "tokens=2 delims=$" %%i in (config.cfg) do set "instfr=%%i" 
04.
set "folder=D:\DeinPfad" 
05.
set "instfr=D:\DeinAndererPfad" 
06.
del /f /q /s "%instfr%\DBhtm\*.htm" 
07.
set counter="0" 
08.
for /f "tokens=3 delims=. " %%i in ('chcp') do set "CP=%%i" 
09.
chcp 1252>nul 
10.
pushd "%folder%" 
11.
for /d %%i in (*.*) do set "Interpret=%%i" & call :ProcessDir 
12.
for %%i in ("%instfr%\DBhtm\?.htm") do for /f "usebackq tokens=2 delims=<>" %%a in ("%%i") do dir /b /ad /on "%%a\*.*" && echo ^<p^>^</p^>>"%instfr%\DBhtm\albums\%%a.htm" 
13.
popd 
14.
chcp %CP% >nul 
15.
goto :eof 
16.
 
17.
:ProcessDir 
18.
set "Interpret=%Interpret:&=^&%" 
19.
set /A counter+=1 
20.
>>"%instfr%\DBhtm\%Interpret:~,1%.htm" echo ^<option value="%counter%" onclick="javascript:top.albums.location.href='albums/%Interpret%.htm'"^>%Interpret%^</option^> 
21.
goto :eof
Grüße
bastla

P.S.: Bitte "Code"-Formatierung verwenden ...
Bitte warten ..
Mitglied: araBonG
28.05.2010 um 23:55 Uhr
Es sieht bis jetzt folgendermaßen aus:

01.
@echo off & setlocal 
02.
for /f "tokens=1 delims=$" %%i in (config.cfg) do set "folder=%%i" 
03.
for /f "tokens=2 delims=$" %%i in (config.cfg) do set "instfr=%%i" 
04.
del /f /q /s %cd%\DBhtm\*.htm 
05.
set counter="0" 
06.
for /f "tokens=3 delims=. " %%i in ('chcp') do set "CP=%%i" 
07.
chcp 1252>nul 
08.
pushd "%folder%" 
09.
for /d %%i in (*.*) do set "Interpret=%%i" & call :ProcessDir 
10.
for %%i in ("%instfr%\DBhtm\"?.htm) do for /f "usebackq tokens=2 delims=<>" %%a in ("%%i") do for /f "tokens=* delims=" %%h in ('dir /b /ad /on "%%a\*.*"') do echo %%h^<p^>^</p^>>>"%instfr%\DBhtm\albums\%%a.htm" 
11.
popd 
12.
chcp %CP% >nul 
13.
goto :eof 
14.
 
15.
:ProcessDir 
16.
set "Interpret=%Interpret:&=^&%" 
17.
set /A counter=%counter%+1 
18.
set "letter=%Interpret:~,1%"  
19.
set "letter=%letter:a=A%" 
20.
set "letter=%letter:ä=A%" 
21.
set "letter=%letter:Ä=A%" 
22.
set "letter=%letter:b=B%" 
23.
set "letter=%letter:c=C%" 
24.
set "letter=%letter:d=D%" 
25.
set "letter=%letter:e=E%" 
26.
set "letter=%letter:f=F%" 
27.
set "letter=%letter:g=G%" 
28.
set "letter=%letter:h=H%" 
29.
set "letter=%letter:i=I%" 
30.
set "letter=%letter:j=J%" 
31.
set "letter=%letter:k=K%" 
32.
set "letter=%letter:l=L%" 
33.
set "letter=%letter:m=M%" 
34.
set "letter=%letter:n=N%" 
35.
set "letter=%letter:o=O%" 
36.
set "letter=%letter:ö=O%" 
37.
set "letter=%letter:Ö=O%" 
38.
set "letter=%letter:p=P%" 
39.
set "letter=%letter:q=Q%" 
40.
set "letter=%letter:r=R%" 
41.
set "letter=%letter:s=S%" 
42.
set "letter=%letter:t=T%" 
43.
set "letter=%letter:u=U%" 
44.
set "letter=%letter:ü=U%" 
45.
set "letter=%letter:Ü=U%" 
46.
set "letter=%letter:v=V%" 
47.
set "letter=%letter:w=W%" 
48.
set "letter=%letter:x=X%" 
49.
set "letter=%letter:y=Y%" 
50.
set "letter=%letter:z=Z%" 
51.
set "letter=%letter:1=0%" 
52.
set "letter=%letter:2=0%" 
53.
set "letter=%letter:3=0%" 
54.
set "letter=%letter:4=0%" 
55.
set "letter=%letter:5=0%" 
56.
set "letter=%letter:6=0%" 
57.
set "letter=%letter:7=0%" 
58.
set "letter=%letter:8=0%" 
59.
set "letter=%letter:9=0%" 
60.
>>%instfr%\DBhtm\"%Interpret:~,1%.htm" echo ^<option value="%counter%" onclick="javascript:top.albums.location.href='albums/%Interpret%.htm'"^>%Interpret%^</option^> 
61.
goto :eof
Fehler die noch behoben werden müssen:

1. Die Buchstabenzuweisen funktioniert nicht richtig: Es werden nur die Buchstaben a,A b,B.... ö,Ö usw. zusammengefasst. Nicht aber o,O,ö,Ö=>O usw.

2. Das Programm verläuft sehr langsam im vergleich zu vorher, nachdem ich die 3. for-Schleife angebracht habe (Zeile 10).

Könnt ihr mir dabei noch helfen??? Ich komm da nicht wirklich weiter.
Schonmal ein dickes Dankeschön für die bisherige Hilfe!

Mit freundlichen Grüßen
araBonG

PS@Bastla: Es klappt ja eigentlich schon... nur nur das <p></p> anhängen hat nicht geklappt und die Buchstabenzuweisung klappt aus unterklärlichem Grund nicht.
Bitte warten ..
Mitglied: bastla
29.05.2010 um 12:46 Uhr
Hallo araBonG!
die Buchstabenzuweisung klappt aus unterklärlichem Grund nicht.
Es bringt nicht allzuviel, fein säuberlich die Zuodnungen zur Variablen %letter% vorzunehmen, um dann doch in Zeile 60 wieder %Interpret:~,1% zu verwenden ...
Du kannst übrigens die Zeilen 21, 37 und 45 einsparen - Batch unterscheidet hier nicht zwischen Groß- und Kleinschreibung.
In Deiner Zeile 4 befindet sich ein entbehrliches %cd% - damit würdest Du einfach den beim Start des Batches aktuellen Ordner verwenden (was auch ohne "%cd%" passiert); da Du aber als Basisordner "%instfr%" einliest, hätte ich angenommen (und in meinem letzten Ansatz auch in Zeile 6 so umgesetzt), dass Du dann in diesen Ordner schreiben (und daher vorweg die bereits enthaltenen Dateien entfernen) willst.

Zusätzlich wäre es noch sinnvoll, davor mit der Zeile
md "%instfr\DBhtm" 2>nul
dafür zu sorgen, dass es den entsprechenden Unterordner auch wirklich gibt - und wenn's ganz schön sein soll, wäre dem "del"-Befehl auch noch ein "2>nul" hinzuzufügen (um die Fehlermeldung zu unterdrücken, wenn es gar keine zu löschenden Dateien gibt).
Auch wenn's nicht die gewünschte Geschwindigkeitssteigerung bringen wird: in der Zeile 10 ist das "tokens=*" in "tokens=* delims=" redundant - wenn es kein Trennzeichen gibt ("delims=" bedeutet genau das), entsteht ohnehin nur ein Token - also kein Grund, den Batch anzuweisen, alle Tokens zu verwenden ...
Etwas unorthodox finde ich Deinen Einsatz von Anführungszeichen (vergleiche mal die Zeilen 10 und 60 hinsichtlich "%instfr%...") - wo ich diese Anführungszeichen platzieren würde, siehst Du in meinem Entwurf in den Zeilen 12 und 20.

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
29.05.2010 um 16:34 Uhr
Hallo araBonG,

ergänzend zu bastlas Anmerkungen,
könntest du die ganzen Set Letter=%Letter:... zur Wandlung in Großschrift entsorgen
wenn die Dateien vorher schon mit Großbuchstaben existieren,
das Dateisystem benutzt die Vorhandenen - egal in welcher Schreibweise.

Zur Not kann man die Anfangs 1 mal leer erzeugen, anstatt bei jeder Datei alle möglichen Umwandlungen zu versuchen. Durch die eingesparten Befehle könnte es etwas schneller sein.
For %%L in (A B C D E F G H  I J K L M N O P Q R S T U V W X Y Z 
) Do If Not Exist "%instfr%\DBhtm\%%L.htm" Type NUL >"%instfr%\DBhtm\%%L.htm"
Gruß
LotPings
Bitte warten ..
Mitglied: araBonG
29.05.2010 um 19:15 Uhr
Vielen Dank für eure Hilfe!!!

Wenn das Programm abgeschlossen ist kann ich es ja online stellen.

Hat jetzt alles geklappt.
Bitte warten ..
Mitglied: araBonG
09.06.2010 um 14:44 Uhr
Erstmal der Code:
01.
@echo on & setlocal 
02.
for /f "tokens=1 delims=$" %%i in (config.cfg) do set "folder=%%i" 
03.
for /f "tokens=2 delims=$" %%i in (config.cfg) do set "instfr=%%i" 
04.
set counter="0" 
05.
for /f "tokens=3 delims=. " %%i in ('chcp') do set "CP=%%i" 
06.
chcp 1252>nul 
07.
pushd "%folder%" 
08.
for /d %%i in (*.*) do set "interpret=%%i" & call :ProcessDir 
09.
for %%i in ("%instfr%\DBhtm\?.htm") do for /f "usebackq tokens=2 delims=<>" %%a in ("%%i") do for /f "delims=" %%h in ('dir /b /ad /on "%%a\*.*"') do echo %%h^<p^>^</p^>>>"%instfr%\DBhtm\albums\%%a.htm" 
10.
popd 
11.
chcp %CP% >nul 
12.
exit 
13.
 
14.
:ProcessDir 
15.
set "interpret=%interpret:&=^&%" 
16.
set /A counter=%counter%+1 
17.
set "letter=%interpret:~,1%"  
18.
set "letter=%letter:1=0%" 
19.
set "letter=%letter:2=0%" 
20.
set "letter=%letter:3=0%" 
21.
set "letter=%letter:4=0%" 
22.
set "letter=%letter:5=0%" 
23.
set "letter=%letter:6=0%" 
24.
set "letter=%letter:7=0%" 
25.
set "letter=%letter:8=0%" 
26.
set "letter=%letter:9=0%" 
27.
>>"%instfr%\DBhtm\%letter%.htm" echo ^<option value="%counter%" onClick="javascript:parent.album.location.href='albums/%interpret%.htm';"^>%interpret%^</option^> 
28.
goto :eof
Leider ist das ganze doch nicht soooo rund gelaufen wie ich dachte:

Die HTA macht hier die größeren Probleme...

Und zwar müssten noch zwei Sachen angepasst werden.
1. Müssen alle Sonderzeichen und Leerzeichen im Dateinamen durch _ ersetzt werden.
Dafür wird dann eine 2. Variable von den überflüssigen Zeichen "befreit".
Ungefähr so
01.
>>"%instfr%\DBhtm\%letter%.htm" echo ^<option value="%counter%" onClick="javascript:parent.album.location.href='albums/%datname%.htm';"^>%interpret%^</option^>
Wichtig ist das der Originale Name der Interpreten bleiben soll.
Das ganze müsste dann auch in der ersten FOR-Schleife gändert werden....

2. Die HTA lässt anscheinend kein Skript zu, aber irgendwie muss ich ja die Alben anzeigen lassen....
01.
<form method="POST" action="--WEBBOT-SELF--"> 
02.
<select size="20" name="ddb"> 
03.
<option value="4" onClick="javascript:parent.album.location.href='albums/A Perfect Circle.htm';">A Perfect Circle</option> 
04.
................ 
05.
<option value="246" onClick="javascript:parent.album.location.href='albums/Avenged Sevenfold.htm';">Avenged Sevenfold</option> 
06.
</select> 
07.
<iframe name="album" width="300" height="350" marginwidth="1" marginheight="1" border="0" frameborder="0"> 
08.
Your browser does not support inline frames or is currently configured not to display inline frames. 
09.
</iframe> 
10.
</form>
*(die äuseren Codeschnipsel werden nachträglich hinzugefügt)
Das ganze klappt unter Firefox wenn man "A.html" öffnet *, jedoch wird in der HTA der Frame weder angezeigt, noch erneuert.

Wenn ihr mir nochmal helfen könntet wäre das sehr nett!

Mit freundlichen Grüßen
araBonG
Bitte warten ..
Mitglied: bastla
09.06.2010 um 18:33 Uhr
Hallo araBonG!

Nur mal kurz nachgefragt:
1. Müssen alle Sonderzeichen und Leerzeichen im Dateinamen durch _ ersetzt werden.
Gibt's dazu eine Positiv- / Negativliste?
Dafür wird dann eine 2. Variable von den überflüssigen Zeichen "befreit".
Welche Variable von welchen Zeichen?

Grüße
bastla
Bitte warten ..
Mitglied: araBonG
10.06.2010 um 14:08 Uhr
Eher eine Positiv liste.. also nur
AaBbCcDdEeFf.....XxYyZz....0123456789



Also die 1. Variable %interpret% soll zB. "Guns N' Roses" heißen. Dieser soll dann in der HTA angezeigt werden.

Die 2. Variable %datname% soll dann nach dem Beispiel "Guns_N_ _Roses"* heißen. Diese wird dann als Dateiname gespeichert.
Und in die Datei "Guns_N_ _Roses.htm" (nach jetzigem Entwicklungsstand "Guns N' Roses.htm") soll und albums/ aufrufbar sein.

*Leerzeichen zwischen _ ist wegen dem Formatierungscode
Bitte warten ..
Mitglied: bastla
12.06.2010 um 00:50 Uhr
Hallo araBonG!

Das Umwandeln der Interpreten-Namen in "saubere" Schreibweise wäre in Batch zwar auch möglich, aber etwas mühsam - daher verwende ich dafür ein kleines (vom Batch selbst erzeugtes) VBScript:
01.
@echo on & setlocal 
02.
for /f "tokens=1 delims=$" %%i in (config.cfg) do set "folder=%%i" 
03.
for /f "tokens=2 delims=$" %%i in (config.cfg) do set "instfr=%%i" 
04.
set /a counter=0 
05.
for /f "tokens=3 delims=. " %%i in ('chcp') do set "CP=%%i" 
06.
chcp 1252>nul 
07.
set T=%temp%\TidyString.vbs 
08.
>%T% echo E="_":OK="AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789":A=WScript.Arguments(0):For i=1 To Len(A):Z=Mid(A,i,1):If InStr(OK,Z)^>0 Then:N=N^&Z:Else:N=N^&E:End If:Next:WScript.Echo N 
09.
pushd "%folder%" 
10.
for /d %%i in (*.*) do set "interpret=%%i" & call :ProcessDir 
11.
for %%i in ("%instfr%\DBhtm\?.htm") do ( 
12.
    for /f "usebackq tokens=2,4 delims=<>/;" %%a in ("%%i") do ( 
13.
        for /f "delims=" %%d in ('echo %%a) do ( 
14.
            for /f "delims=" %%h in ('dir /b /ad /on "%%b\*.*"') do echo %%h^<p^>^</p^>>>"%instfr%\DBhtm\albums\%%d" 
15.
16.
17.
18.
popd 
19.
chcp %CP% >nul 
20.
goto :eof 
21.
 
22.
:ProcessDir 
23.
set "interpret=%interpret:&=^&%" 
24.
set /A counter+=1 
25.
set "letter=%interpret:~,1%"  
26.
set "letter=%letter:1=0%" 
27.
set "letter=%letter:2=0%" 
28.
set "letter=%letter:3=0%" 
29.
set "letter=%letter:4=0%" 
30.
set "letter=%letter:5=0%" 
31.
set "letter=%letter:6=0%" 
32.
set "letter=%letter:7=0%" 
33.
set "letter=%letter:8=0%" 
34.
set "letter=%letter:9=0%" 
35.
for /f "delims=" %%i in ('cscript //nologo %T% "%interpret%') do set "datname=%%i" 
36.
>>"%instfr%\DBhtm\%letter%.htm" echo ^<option value="%counter%" onClick="javascript:parent.album.location.href='albums/%datname%.htm';"^>%interpret%^</option^> 
37.
goto :eof
Das Ersatzzeichen "_" und die Positivliste werden (unschwer erkennbar) in Zeile 8 festgelegt ...

Die Tatsache, dass der Interpretenname Zeichen für Zeichen geprüft / geändert werden muss, wird wohl zu keiner Geschwindigkeitssteigerung führen ...

Grüße
bastla

[Edit] Nach einer erforderlichen Anpassung der Zeilenzerlegung könnte (ist ungetestet) das jetzt funktionieren ... [/Edit]
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...