darkprodukt
Goto Top

BATCH Das filtern einer Zahl aus jeder einzelnen Zeile von einer Textdatei

Hallo, und vielen Dank für jede Hilfe die ich bekomme.

Ich habe mich vor einiger Zeit schonmal mit einem BATCH Programm befasst und hatte auch einen Erfolg.
Ich will das Programm aber nun in V2 übergehen lassen und dabei schritte die ich von Hand machen muste nun mit dem Programm machen.

Mein Problem im momment ist:

Ich habe einige dateinamen in einer Textdatei die ca. so aussehen:
_BlaBlub__Langweiligertext_-_01_E5F7B270_ 
_BlaBlub__Langweiligertext_-_02_5D5C3E0F_ 
_BlaBlub__Langweiligertext_-_Folge_01_36BCEBESz98_ 
_BlaBlub__Langweiligertext_-_Folge_02_049D9A7E_ 
_BlaBlub__Langweiligertext!_-_Episode_01_
_BlaBlub__Langweiligertext!_-_Episode_02_

_BlaBlub__Langweiligertext_01_6B9FB6E2_ 
_BlaBlub__Langweiligertext_02_8F4DF051_ 
_BlaBlub__Langweiligertext_Folge_01_A4E0CAEE22_ 
_BlaBlub__Langweiligertext_Folge_02_7142DFF0_ 
_BlaBlub__Langweiligertext_Episode_01_BFE600CA_ 
_BlaBlub__Langweiligertext_Episode_02_65D87891G031_ 

_BlaBlub01__Langweiligertext_-_01_E5F7B270__65DA68_
_BlaBlub02__Langweiligertext_-_02_5D5C3E0F_ 
_BlaBlub03__Langweiligertext_-_Folge_01_36BCEB98_ 
_BlaBlub04__Langweiligertext!_-_Folge_02_049D9UZKYA7E_ 
_BlaBlub05__Langweiligertext!_-_Episode_01_BFE600CA_ 
_BlaBlub06__Langweiligertext_-_Episode_02_65D87031_ 

_BlaBlub07__Langweiligertext_01_
_BlaBlub08__Langweiligertext_02_
_BlaBlub09__Langweiligertext_Folge_01_A4E0CE22_ 
_BlaBlub10__Langweiligertext!_Folge_02_7142DFF0_ 
_BlaBlub11__Langweiligertext!_Episode_01_BFA681EE600CA_ 
_BlaBlub12__Langweiligertext_Episode_02_65D87031__65D87031_

aus dieser will ich mit einem befehl diese ausgabe bekommen
01
02
01
02
01
02
...

Also die Episoden Zahl

Ich bin am überlegen einfach alles was mit _"Buchstabe" anfängt bis zum negsten _ zu löschen und die wörter am Dateianfang bis zum _ löschen und danach alle sonderzeichen zu löschen.
Dan solte die erste Zahl die episodennummer sein.

Das Problem ist wie mach ich so einen Filter ???

Was ich hinbekomme ist:
Alle Sonderzeichen und Buchstaben zu Löschen aber dann würde ja manchmal das 07 am anfang als ausgabe da sein.

Edit: Beispiele Überarbeitet

Content-ID: 187710

Url: https://administrator.de/forum/batch-das-filtern-einer-zahl-aus-jeder-einzelnen-zeile-von-einer-textdatei-187710.html

Ausgedruckt am: 26.12.2024 um 00:12 Uhr

rubberman
rubberman 10.07.2012 um 00:09:17 Uhr
Goto Top
Hallo Darkprodukt,

Du könntest den Name am String "Episode" trennen, um es einfacher zu machen.
@echo off &setlocal
for /f "usebackq delims=" %%a in ("names.txt") do (  
  set "ln=%%a"  
  setlocal EnableDelayedExpansion
    for /f "tokens=2 delims=•" %%b in ("!ln:Episode=•!") do (  
      for /f "delims=_" %%c in ("%%b") do echo %%c  
    )
  endlocal
)
pause

Grüße
rubberman
Darkprodukt
Darkprodukt 10.07.2012 um 00:13:12 Uhr
Goto Top
Danke für hilfreiche Antwort, damit kan ich schonmal was anfangen.

Jezt hab ich nur noch das Problem:
Es steht nicht immer Episode davor.

Es kan auch mal nur Ep oder folge oder auch nix dastehen

Sry das ich das nicht gleich im Beispiel gesagt habe. Ich hab einfach vergessen dazu ein Beispiel zu geben.

Ich Überarbeite mein Beispiel mal schnell.
rubberman
rubberman 10.07.2012 um 00:22:22 Uhr
Goto Top
Hallo Darkprodukt,

in Zeile 3 wirklich "Ep01" ohne Underline dazwischen?
Was ist mit der Zeichenfolge "_-_"? Taugt die um eine Trennung des Namens vorzunehmen?

Grüße
rubberman
Darkprodukt
Darkprodukt 10.07.2012 aktualisiert um 00:33:14 Uhr
Goto Top
Das mit nur Ep hab ich behoben die Erkennung der Episode ist also eine Zahl die _"Zahl(Ein oder Zweistellig)"_


Edit: So jezt sind alle möglichen Kombinationen in der Beispiel Liste


Und entschuldigung das ich die Beispiele nicht gleich Richtig geschrieben habe.
bastla
bastla 10.07.2012 um 00:35:15 Uhr
Goto Top
Hallo Darkprodukt und rubberman!

Und wenn das vom Ende her aufgedröselt wird?
@echo off &setlocal
for /f "usebackq delims=" %%a in ("names.txt") do (  
  set "ln=%%a"  
  setlocal EnableDelayedExpansion
  set "ln=!ln:~,-10!"  
  for %%b in (!ln:_^= !) do set "Nr=%%b"  
  echo !Nr!
  endlocal
)
pause
Grüße
bastla
Darkprodukt
Darkprodukt 10.07.2012 aktualisiert um 00:58:52 Uhr
Goto Top
*Heul*

Ich bin echt nicht so besonders in der Schilderung von Problemen...

Naja hier ist eben das Problem das es eben nicht gesagt ist das am ende immer so eine CODE gewirr im dateinamen steht.
Es kan auch Länger sein oder garnicht vorhanden

Beispielliste wieder Überarbeitet

Edit:
Ich glaube meine schlechten Beispiele kommen daher das ich weiß was ich will und vieles als gegeben ansehe was für euch eine info ist ... naja ich bin mit ziemlich sicher, dass das jezt alles war ^^
rubberman
rubberman 10.07.2012 aktualisiert um 01:05:27 Uhr
Goto Top
Hallo Zusammen.

Sehr laaangsaaam, sollte aber alle Vorkommen von ein- und zweistelligen numerischen Ausdrücken, die in Underlines eingefasst sind finden.
@echo off &setlocal
for /f "usebackq delims=" %%a in ("names.txt") do (  
  set "ln=%%a"  
  setlocal EnableDelayedExpansion
    for %%b in ("!ln:_=" "!") do echo %%~b|findstr /x "[0-9][0-9]*"  
  endlocal
)
pause
Ich würde persönlich für RegExp in VBScript plädieren...

[EDIT]@bastla Wir schauen in die gleiche Glaskugel, oder? face-smile[/EDIT]

Grüße
rubberman
bastla
bastla 10.07.2012 aktualisiert um 01:09:30 Uhr
Goto Top
Hallo Darkprodukt!

In diesem Fall würde ich tatsächlich Deine Idee mit der Suche nach der ersten Kombination "_" + Ziffer(n) + "_" aufgreifen (ein wenig VBS im Batch stört ja hoffentlich nicht):
@echo off &setlocal
set "Datei=names.txt"  

set "F=%temp%\Filtern.vbs"  
 >"%F%" echo Set rE=New RegExp:rE.Pattern = "_(\d+)_":Lines=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile("%Datei%").ReadAll, vbCrLf)  
>>"%F%" echo For Each Line In Lines:Set Matches = rE.Execute(Line):For Each Match In Matches:WScript.Echo Match.SubMatches(0)^&" "^&Line:Next:Next  

for /f "tokens=1*" %%a in ('cscript //nologo "%F%"') do echo %%a in %%b  
pause
[Edit] noch um Ausgabe der Originalzeile erweitert [/Edit]

Grüße
bastla

[Edit] @rubberman: Deine Ideen sind doch wirklich immer die besten ... face-wink [/Edit]
Darkprodukt
Darkprodukt 10.07.2012 aktualisiert um 01:18:17 Uhr
Goto Top
@rubberman

Fungtioniert bis jezt einwandfrei.

Danke

Mich würde aber noch interessieren wie du die zufälligen Zahlen aus dem Codegewirr am ende ausgeklammert hast und die am anfang von _BlaBlub08_ etc.

Danke
Darkprodukt
Darkprodukt 10.07.2012 um 01:21:17 Uhr
Goto Top
@bastla

Das fungtioniert auch einwandfrei, aber ich habe keine Ahnung von vbs skribt (leider)

Aber solange es Fungtioniert

DANKE
rubberman
rubberman 10.07.2012 aktualisiert um 01:28:45 Uhr
Goto Top
Hallo Darkprodukt

Ich mache aus
_BlaBlub__Langweiligertext_-_01_E5F7B270_
ein
"" "BlaBlub" "" "Langweiligertext" "-" "01" "E5F7B270" ""
indem ich jeden _ durch " " ersetze und den gesamten Ausdruck zusätzlich in Anführungszeichen setze. Somit ergeben sich in Anführungszeichen stehende Teilstrings, die durch Leerzeichen voneinander getrennt sind. In der zweiten FOR Schleife wird jeder einzelne Teilstring geprüft.

Grüße
rubberman
bastla
bastla 10.07.2012 um 01:30:49 Uhr
Goto Top
Hallo rubberman!

Täusche ich mich, oder ist die Laufzeit mit
for %%b in (!ln:_^= !) do echo %%~b|findstr /x "[0-9][0-9]*"
tatsächlich besser?

Grüße
bastla
Darkprodukt
Darkprodukt 10.07.2012, aktualisiert am 11.07.2012 um 15:40:20 Uhr
Goto Top
Hm danke find ich super

Ein Problem weniger

Edit: Ein Problem hätte ich aber noch.
Wie kan ich die Ausgabe in eine datei Umleiten?

Ich kan ja schlecht
:FilterEP
>type >%TEMP%\tempdatep.txt
cls

.wandler\wandler %TEMP%\tempdatn.txt /Q /L /T /:. /:_ /:Ep /: /:v2 /: /:v3 /:

for /f "usebackq delims=" %%a in ("tempdatn.txt") do (  
  set "ln=%%a"  
  setlocal EnableDelayedExpansion
    for %%b in ("!ln:_=" "!") do echo %%~b|findstr /x "[0-9][0-9]*">>%TEMP%\tempdatep.txt  
  endlocal
)
.wandler\wandler tempdatep.txt /Q /L /T /:_ /:@20
.wandler\wandler tempdatep.txt /Q /L /T
goto Programm
schreiben

@bastla
Ich erinnere mich das du damals gefragt hast was .wandler\wandler ... ist und ich vergessen hatte zurück zu schreiben

.wandler\wandler ist eine fungtion zur veränderung von Texten
erst wird der Pfad von der zu verändernde datei übergeben
danach die parameter (sowas wie Lehrzeichen am anfang und ende einer Zeile löschen und doppelte lehrzeichen entfernen)
und danach unter /: /: wird in der ersten /:"Zu ersetzender string" /:"Mit was ersetzt wird" /:"Zu ersetzender string2" /:"Mit was ersetzt wird2" etc.

Achja und wenn man z.b. /:_ /:@20 schreibt wird aus dem _ ein Lehrzeichen ;)

Habs nicht selbst geschrieben. Ist ein altes DOS Tool von irgendwem was ich mal auf einer meiner langen Google Reisen auf der suche nach Lösungen gefunden habe :D

Link: http://igames.inside1.net/html/dosa4.htm Einfach auf WANDLER klicken und downloaden

Hoffe ich konnte es verständlich machen


Edit: Achja Grüße Darkprodukt
rubberman
rubberman 10.07.2012 um 01:43:00 Uhr
Goto Top
Hallo bastla,

kann keinen großen Unterschied ausmachen. Da wir aber nicht wissen wie viele Leerzeichen in "Langweiligertext" womöglich vorkommen, würde ich prophylaktisch davon abraten. Jeder zusätzliche Aufruf von FINDSTR braucht ~200 ms.

Grüße
rubberman
Darkprodukt
Darkprodukt 10.07.2012 aktualisiert um 01:47:56 Uhr
Goto Top
Also die Wartezeiten sind mir egal solange sie nur im Sekunden bereich liegen.
So viel Zeit wie mir das Programm spart :D wenn ich das von Hand machen müste bei ca 1000 Zeilen Puh ^^
rubberman
rubberman 10.07.2012 um 01:58:40 Uhr
Goto Top
Hallo Darkprodukt

Zitat von @Darkprodukt:
Edit: Ein Problem hätte ich aber noch.
Wie kan ich die Ausgabe in eine datei Umleiten?

Ich kan ja schlecht ...

Warum solltest du nicht können?
Du solltest nur sicherstellen dass tempdatep.txt nicht existiert bzw leer ist.

Füge ggf. vorher ein...
>%TEMP%\tempdatep.txt type nul
...ein.

Grüße
rubberman
Darkprodukt
Darkprodukt 10.07.2012 um 02:13:06 Uhr
Goto Top
Das Problem hab ich bei dem echo befehl am ende ...

Ich habe das noch nie so gemacht also mit einer Pipe "|" einen findstr
ergo hab ich keine ahnung wo ich das >>%TEMP%\tempdatf.txt hinpacken soll

Ich habs jezt so aber da wird nix in die Datei geschrieben
:Filter
type >%TEMP%\tempdatf.txt
cls

.wandler\wandler %TEMP%\tempdatn.txt /Q /L /T /:. /:_ /:Ep /: /:v2 /: /:v3 /:
for /f "usebackq delims=" %%a in ("tempdatn.txt") do (  
														set "ln=%%a"  
														setlocal EnableDelayedExpansion
														for %%b in ("!ln:_=" "!") do echo %%~b|findstr /x "[0-9][0-9]*">>%TEMP%\tempdatf.txt  
														endlocal
													  )
.wandler\wandler %TEMP%\tempdatf.txt /Q /L /T /:_ /:@20
.wandler\wandler %TEMP%\tempdatf.txt /Q /L /T
goto Programm
rubberman
rubberman 10.07.2012 aktualisiert um 02:39:07 Uhr
Goto Top
Hallo Darkprodukt,

Ich hab mal alle ".wandler" Zeilen auskommentiert (habe ich schließlich nicht) und siehe da, in der Datei steht was drin stehen soll.
Dein Problem liegt nicht in der Umleitung der Daten von FINDSTR. Da musst du woanders suchen.

Grüße
rubberman

[EDIT] "tempdatn.txt" liegt auch im %temp% Verzeichnis, oder? Dann schreibe es auch so in die FOR schleife face-wink [/EDIT]
Darkprodukt
Darkprodukt 10.07.2012 um 09:29:38 Uhr
Goto Top
... Sry Das hätte ich auch selber sehen können ;)

Ok danke an alle für die Hilfe meine Frage wäre somit beantwortet.
pieh-ejdsch
pieh-ejdsch 10.07.2012 aktualisiert um 23:15:16 Uhr
Goto Top
moin,

Beim einfachen Alphabet und paar Zeichen hätte ich dazu tendiert:
>"%TEMP%\tempdatf.txt" (for /f "usebackq delims=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXZ.-_! " %%i in ("C:\Users\Pieh-Ejdsch AD\Desktop\CMD\a.-CRLF.txt") do @echo %%~i)  

sonst hätte ich Zwecks Performance so getan:
>"%TEMP%\tempdatf.txt" (for /f "usebackq delims=" %%a in ("tempdatn.txt") do (  
  set "ln=%%a"  
  setlocal EnableDelayedExpansion
    for %%b in ("!ln:_=" "!")  do @if %%~b gtr 0 if %%~b lss 100 echo %%~b  
  endlocal
))

  endlocal
)

PS. @Darkprodukt mach bitte noch ein Gelöst Marker an den Thread
[Edit]
b eingetragen
[/Edit]

Gruß Phil
Darkprodukt
Darkprodukt 10.07.2012 aktualisiert um 16:17:37 Uhr
Goto Top
@pieh-ejdsch

Hm... aber würde bei der Lösung nicht auch bei dem hier

_Blablub07_Langweiligertext_-_05_12ABSDE_ das rauskommen --> 070512 ???

Edit: Hab gerade deine nicht so Performance Lastige version getestet.
Das am ende echo %%~i muss %%~b heißen oder. ;)

Sie ist zwar Schneller bringt aber auch 167 Zeilen stadt 165.
Hat aber den ersten Fehler erst bei Zeile 57. (Mehr Infos weiter unten)

@rubberman
Ich hab gestern deinen Code getestet und er fungtioniert Wunderbar.

Heute hab ich mein ganzes Projekt zuende bekommen und muste Feststellen, dass wenn
man es bei ca 150+ Datein einsetzt die Lösung so ausschaut:
[...]
02
03
04
05
06
07
24493129
08
09
10
[...]
16
17
18
19
20
07960983
21
[...]
10
11
12
04
62498820
05
[...]
02
03
01
02
66528224
03
04
[...]
09
10
11
12
33240428
13
01
[...]
Das war angewannt auf 165 Dateinamen und es kamen 167 Zahlen raus.
Die Sätze haben alle die Creterien erfüllt bis auf 3 in denen keine Zahl zu ermitteln war

Wie man sehen kan sind 5 komplett unbrauchbare Zahlen dabei.
Das macht 167 Ergebnisse - 5 Unbracubare + 3 Nicht Ermittelbare = 165

Woher kommen siese Fahler Zahlen?
An den Nciht zu ermittelnden Ligt es aufjedenfall nicht Direkt da die erste Fehlerzahl in Zeile 36 kommt und
der erste nicht zu ermittelnde satz in Zeile 114.

Das negste Problem ist auch noch, das die Zahlen nach diesn Unbrauchbaren nach unten verschoben werden
und somit sogar die richtigen unbrauchbar machen.


Der Code
for /f "eol=/" %%i in ('type "CLRLIB.txt"') do (  
												echo Ersetze: %%i && .wandler\wandler %TEMP%\tempdatn.txt /Q /L /T /:%%i /:_
												)
.wandler\wandler %TEMP%\tempdatn.txt /Q /L /T /:. /:_ /:Ep /:_ /:@20 /:_
timeout /t 1 >NUL
for /f "usebackq delims=" %%a in ("%TEMP%\tempdatn.txt") do (  
															set "ln=%%a"  
															setlocal EnableDelayedExpansion
															for %%b in ("!ln:_=" "!") do echo %%~b|findstr /x "[0-9][0-9]*">>%TEMP%\tempdatf.txt  
															endlocal
															)
.wandler\wandler %TEMP%\tempdatf.txt /Q /L /T /:_ /:@20
.wandler\wandler %TEMP%\tempdatf.txt /Q /L /T

Edit: Könnte man vieleicht als Fehlererkennung einbauen, dass wenn keine Zahl ermittelt werden konnte "OVA" als ausgabe kommt?
Vieleicht Löst sich das Problem ja dann auf.

Edit2: Ich kann wenn gewünscht mal alle Datein (auch die Tempdatein) in eine Rar packen und sie Hochladen
bastla
bastla 10.07.2012 aktualisiert um 16:53:15 Uhr
Goto Top
Hallo Darkprodukt!

Wenn sichergestellt werden soll, dass nur zweistellige Zahlen ausgegeben werden, brauchst Du eigentlich nur den "*" in der Zeile 9 zu entfernen - oder meinen Vorschlag von sehr weit oben auf
@echo off &setlocal
set "Datei=names.txt"  

set "F=%temp%\Filtern.vbs"  
 >"%F%" echo Set rE=New RegExp:rE.Pattern="_(\d\d)_":Lines=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile("%Datei%").ReadAll, vbCrLf)  
>>"%F%" echo For Each Line In Lines:Set Matches=rE.Execute(Line):If Matches.Count=0 Then:WScript.Echo "OVA":Else:For Each Match In Matches:WScript.Echo Match.SubMatches(0):Next:End If:Next  

cscript //nologo "%F%">%TEMP%\tempdatf.txt  
zu ändern (da wird dann auch schon im Fall des Falles "OVA" ausgegeben)
wenn gewünscht mal alle Datein (auch die Tempdatein) in eine Rar packen und sie Hochladen
Es sollte eigentlich schon genügen, die Datei "tempdatn.txt" im Zustand nach der "Wandlung" zu posten ...

Grüße
bastla
Darkprodukt
Darkprodukt 10.07.2012 aktualisiert um 18:51:53 Uhr
Goto Top
Ok hier:
KQ_Oacp__01_avi
KQ_Oacp__02_avi
KQ_Oacp__03_avi
KQ_Oacp__04_avi
KQ_Oacp__05_avi
KQ_Oacp__06_avi
KQ_Oacp__07_avi
KQ_Oacp__08_avi
KQ_Oacp__09_avi
KQ_Oacp__10_avi
KQ_Oacp__11_avi
KQ_Oacp__12_avi
KQ_Oacp__13_avi
KQ_Oacp__14_avi
KQ_Oacp__15_avi
KQ_Oacp__16_avi
KQ_Oacp__17_avi
KQ_Oacp__18_avi
KQ_Oacp__19_avi
KQ_Oacp__20_avi
KQ_Oacp__21_avi
KQ_Oacp__22_avi
KQ_Oacp__23_avi
KQ_Oacp__24_avi
KQ_Oacp__25_avi
KQ_Oacp__26_avi
_No_KQ_Oacp_if_-_01_XviD__DC32D2A2__avi
_No_KQ_Oacp_if_-_02_XviD__F36F6EC8__avi
_kK_KQOacp2_01_791F179E__avi
_kK_KQOacp2_02_F0B55322__avi
_kK_KQOacp2_03_99EDFA50__avi
_kK_KQOacp2_04_6793ADCE__avi
_kK_KQOacp2_05_24E8E646__avi
_kK_KQOacp2_06_6904D1B2__avi
_kK_KQOacp2_07_24493129__avi
_kK_KQOacp2_08_5505102F__avi
_kK_KQOacp2_09_D912E601__avi
_kK_KQOacp2_10_D1A1D042__avi
_kK_KQOacp2_11_80F0FD83__avi
_kK_KQOacp2_12_97CA4558__avi
_kK_KQOacp2_13_56DE5B4E__avi
_UsAn__KQ_Oacp_II_SS_01____________78930DD8__mp4
_UsAn__KQ_Oacp_II_SS_02___________4282BE33__mp4
_UsAn__KQ_Oacp_II_SS_03___________5C623EEF__mp4
_UsAn__KQ_Oacp_II_SS_04___________8AAA20B__mp4
_UsAn__KQ_Oacp_II_SS_05___________57DDA_F__mp4
_UsAn__KQ_Oacp_II_SS_06___________517958C8__mp4
_UsAn__KQ_Oacp_II_SS_07___________6D4F31C2__mp4
_UsAn__KQ_Oacp_II_SS_08___________C02CD55C__mp4
_UsAn__KQ_Oacp_II_SS_09___________1395E8DA__mp4
_UsAn__KQ_Oacp_II_SS_10___________A00EEBC2__mp4
_UsAn__KQ_Oacp_II_SS_11___________EB5D3761__mp4
_UsAn__KQ_Oacp_II_SS_12___________C7_1DFD__mp4
_UsAn__KQ_Oacp_II_SS_13___________A3B16E5A__mp4
_UsAn__KQ_Oacp_SS_01__768x432________E01617A4__mp4
_UsAn__KQ_Oacp_SS_02__768x432________919A687D__mp4
_UsAn__KQ_Oacp_SS_03__768x432________0FD1CF09__mp4
_UsAn__KQ_Oacp_SS_04__768x432________8861E984__mp4
_UsAn__KQ_Oacp_SS_05__768x432________09B70F57__mp4
_UsAn__KQ_Oacp_SS_06__768x432________4B1A337A__mp4
_UsAn__KQ_Oacp_SS_07__768x432________E827A2D8__mp4
_UsAn__KQ_Oacp_SS_08__768x432________394EBAFF__mp4
_UsAn__KQ_Oacp_SS_09__768x432________48D43C36__mp4
_UsAn__KQ_Oacp_SS_10__768x432________53F6C1CD__mp4
_UsAn__KQ_Oacp_SS_11__768x432________4F164C87__mp4
_UsAn__KQ_Oacp_SS_12__768x432________459EF7BB__mp4
_UsAn__KQ_Oacp_SS_13__768x432________5E5DB92F__mp4
_UsAn__KQ_Oacp_SS_14__768x432____-___8DCACDC3__mp4
_UsAn__KQ_Oacp_SS_15__768x432____-___726C4AEC__mp4
_UsAn__KQ_Oacp_SS_16__768x432________DA68AA76__mp4
_UsAn__KQ_Oacp_SS_17__768x432________FDADE43A__mp4
_UsAn__KQ_Oacp_SS_18__768x432________9C44DF5B__mp4
_UsAn__KQ_Oacp_SS_19__768x432________A5B9043B__mp4
_UsAn__KQ_Oacp_SS_20__768x432________07960983__mp4
_UsAn__KQ_Oacp_SS_21__768x432________B0FAB135__mp4
_UsAn__KQ_Oacp_SS_22__768x432________91FEAD___mp4
___kl_-_t_sqrt_on_dsmoaes_-_01_XviD__ECA258EB__avi
___kl_-_t_sqrt_on_dsmoaes_-_02_XviD__9CF1D142__avi
___kl_-_t_sqrt_on_dsmoaes_-_03_XviD__D3960F9F__avi
___kl_-_t_sqrt_on_dsmoaes_-_04_XviD__FEE4BA5B__avi
___kl_-_t_sqrt_on_dsmoaes_-_05_XviD__6567D67F__avi
___kl_-_t_sqrt_on_dsmoaes_-_06_XviD__F10677E1__avi
___kl_-_t_sqrt_on_dsmoaes_-_07_XviD__800A47DF__avi
___kl_-_t_sqrt_on_dsmoaes_-_08_XviD__87F32A49__avi
___kl_-_t_sqrt_on_dsmoaes_-_09_XviD__325C56D5__avi
___kl_-_t_sqrt_on_dsmoaes_-_10_XviD__A451ED5D__avi
___kl_-_t_sqrt_on_dsmoaes_-_11_XviD__1BF9546F__avi
___kl_-_t_sqrt_on_dsmoaes_-_12_XviD__3157CB4B__avi
___kl_-_t_sqrt_on_msdroaes_-_04_xvid__62498820__avi
___kl_-_t_sqrt_on_msdroaes_-_05_xvid__5CDDD290__avi
___kl_-_t_sqrt_on_msdroaes_-_06_xvid__C4D40826__avi
___kl_-_t_sqrt_on_msdroaes_-_07_xvid__0E3B751B__avi
___kl_-_t_sqrt_on_msdroaes_-_08_xvid__3E0B4DC4__avi
___kl_-_t_sqrt_on_msdroaes_-_09_xvid__CF19E5B2__avi
___kl_-_t_sqrt_on_msdroaes_-_10_xvid__6353FAA6__avi
___kl_-_t_sqrt_on_msdroaes_-_11_xvid__530ACFA5__avi
___kl_-_t_sqrt_on_msdroaes_-_12_xvid__B803D4AE__avi
___Shayo_kl_-_t_sqrt_on_msdroaes_-_01__xvid__6FF112B6__avi
___Shayo_kl_-_t_sqrt_on_msdroaes_-_02_xvid__2328DE27__avi
___Shayo_kl_-_t_sqrt_on_msdroaes_-_03_xvid__DC1DD120__avi
____Bosa_kp_Hrashinbio_-___01__DVD___________7E68F1E6__mp4
____Bosa_kp_Hrashinbio_-___02__DVD___________66528224__mp4
____Bosa_kp_Hrashinbio_-___03__DVD___________0B87CB01__mp4
____Bosa_kp_Hrashinbio_-___04__DVD___________41BB9A44__mp4
____Bosa_kp_Hrashinbio_-___05__DVD___________D70AD88C__mp4
____Bosa_kp_Hrashinbio_-___06__DVD___________231F1ADF__mp4
____Bosa_kp_Hrashinbio_-___07__DVD___________4A10DBCB__mp4
____Bosa_kp_Hrashinbio_-___08__DVD___________CC322B82__mp4
____Bosa_kp_Hrashinbio_-___09__DVD___________F13CF215__mp4
____Bosa_kp_Hrashinbio_-___10__DVD___________6CD20392__mp4
____Bosa_kp_Hrashinbio_-___11__DVD___________97D0966F__mp4
____Bosa_kp_Hrashinbio_-___12__DVD___________4323E168__mp4
____Bosa_kp_Hrashinbio_-___13__DVD___________438B2E47__mp4
____Bosa_kp_Hrashinbio_-_OAV_-_Project_Pink__DVD___________4F8_D6D__mp4
____Gekijouban_Bosa_kp_Hrashinbio_-_Tokei_Jikake_no_A_eloid__________________D2B23653__mp4
Bosa_kp_Hrashinbio_Forte_-_01_-__mp4
Bosa_kp_Hrashinbio_Forte_-_02_-__mp4
Bosa_kp_Hrashinbio_Forte_-_03_-__mp4
Bosa_kp_Hrashinbio_Forte_-_04_-__mp4
Bosa_kp_Hrashinbio_Forte_-_05_-__mp4
Bosa_kp_Hrashinbio_Forte_-_06_-__mp4
Bosa_kp_Hrashinbio_Forte_-_07_-__mp4
Bosa_kp_Hrashinbio_Forte_-_08_-__mp4
Bosa_kp_Hrashinbio_Forte_-_09_-__mp4
Bosa_kp_Hrashinbio_Forte_-_10_-__mp4
Bosa_kp_Hrashinbio_Forte_-_11_-__mp4
Bosa_kp_Hrashinbio_Forte_-_12_-__mp4
_Bisi_Sun__Since_snd_Cosf_-_01__________7B9219C3__mkv
_Bisi_Sun__Since_snd_Cosf_-_02__________4C11795E__mkv
_Bisi_Sun__Since_snd_Cosf_-_03__________BE2F1BC8__mkv
_Bisi_Sun__Since_snd_Cosf_-_04__________5EB4B787__mkv
_Bisi_Sun__Since_snd_Cosf_-_05__________182F1F4F__mkv
_Bisi_Sun__Since_snd_Cosf_-_06__________A0D9DDDF__mkv
_Bisi_Sun__Since_snd_Cosf_-_07_Special________6E3525EB__mkv
_Bisi_Sun__Since_snd_Cosf_-_08__________F0CCFE4B__mkv
_Bisi_Sun__Since_snd_Cosf_-_09__________97ED8FF5__mkv
_Bisi_Sun__Since_snd_Cosf_-_10__________B5EAD512__mkv
_Bisi_Sun__Since_snd_Cosf_-_11__________B29C4648__mkv
_Bisi_Sun__Since_snd_Cosf_-_12__________33240428__mkv
_Bisi_Sun__Since_snd_Cosf_-_13__________5FAD4D97__mkv
_Bisi_Sun__Since_snd_Cosf_II_-_01__________mkv
_Bisi_Sun__Since_snd_Cosf_II_-_02__________mp4
_Bisi_Sun__Since_snd_Cosf_II_-_03__________mkv
_Bisi_Sun__Since_snd_Cosf_II_-_04__________mkv
_Bisi_Sun__Since_snd_Cosf_II_-_05__________mp4
_Bisi_Sun__Since_snd_Cosf_II_-_06__________mkv
_Bisi_Sun__Since_snd_Cosf_II_-_07___________mkv
_Bisi_Sun__Since_snd_Cosf_II_-_08__________mkv
_Bisi_Sun__Since_snd_Cosf_II_-_09__________mkv
_Bisi_Sun__Since_snd_Cosf_II_-_10__________mkv
_Bisi_Sun__Since_snd_Cosf_II_-_11__________mp4
_Bisi_Sun__Since_snd_Cosf_II_-_12__________mp4
_Bisi_Sun__Since_snd_Cosf_II_-_OVA_______mp4
_BFSs_Qlccr_mk_Alse_mu_01___mkv
_BFSs_Qlccr_mk_Alse_mu_02___mkv
_BFSs_Qlccr_mk_Alse_mu_03___mkv
_BFSs_Qlccr_mk_Alse_mu_04___mkv
_BFSs_Qlccr_mk_Alse_mu_05___mkv
_BFSs_Qlccr_mk_Alse_mu_06___mkv
_BFSs_Qlccr_mk_Alse_mu_07___mkv
_BFSs_Qlccr_mk_Alse_mu_08___mkv
_BFSs_Qlccr_mk_Alse_mu_09___mkv
_BFSs_Qlccr_mk_Alse_mu_10___mkv
_BFSs_Qlccr_mk_Alse_mu_11___mkv
_BFSs_Qlccr_mk_Alse_mu_12___mp4

Hab aus Rechtlichen Gründen die Buchstaben durch andere Ersetzt, aber die Groß und kleinschreibung etc. stimmt noch alles.

Edit: Hab deine Variante versucht zu testen in dem ich sie so ansteuere:
for /f "tokens=1*" %%a in ('cscript //nologo "%F%"') do echo %%a>>%TEMP%\tempdatf.txt  

alles Fungtioniert super es wird aber eine Zeile mehr ausgegeben die 166. Zeile ist OVA und zwar warscheinlich
weil in tempdatn.txt die 166. und lezte zeile nix beinhaltet

Ich weiß jezt leider nicht genau wie ich das verhindern kan

Edit: Edit habs Gelöst...
Zwar unsauber aber gelöst
Wenn ich die Datein wieder zusammensetze kommen nur solange datensätze in die neue Datei,
wovon beide Quelldatein eine Grundlage haben. Also wenn in der einen Datei nix und in der anderen OVA am Ende steht verfällt das einfach.

Grüße
Darkprodukt
pieh-ejdsch
pieh-ejdsch 10.07.2012, aktualisiert am 11.07.2012 um 15:37:22 Uhr
Goto Top
moin,

Das hat mir jetzt keine Ruhe gelassen:
Findstr lässt sich aber Performanter einsetzen, wenn es nur einmal je Zeile statt pro Wort suchen muss.

@echo off
set "N=%TEMP%\tempdatn.txt"  
set "F=%TEMP%\tempdatf.txt"  
.wandler\wandler %TEMP%\tempdatn.txt /Q /L /T /:. /:_ /:Ep /:_ /:@20 /:_
timeout /t 1 >NUL

>"%F%" (for /f "usebackq delims=" %%a in ("%N%") do set "ln=%%a" &call :Read )  
.wandler\wandler "%F%" /Q /L /T /:_ /:@20  
.wandler\wandler "%F%" /Q /L /T  

 rem Hier nur exit /b wenn der Batch hier enden soll
::exit /b 

goto :HierWeiter

:Read
(for %%b in ("%ln:_=" "%")  do @echo(%%~b  
)|findstr /rc:"^[0-9][0-9] $" || echo OVA  
exit /b

:HierWeiter
 rem hier gehts normal weiter

OVA wird für ohne Fund ausgegeben.

Gruß Phil
Darkprodukt
Darkprodukt 11.07.2012 aktualisiert um 15:19:05 Uhr
Goto Top
Hm den Code Teste ich mal, aber ich kan ihn leider nicht in meinem Programm einsetzen.

Da ich schon eine andere Sprungmarke am ende der Datei habe.

Es gibt mit Call auch die möglichkeit eine 2. Batch aufzurufen die das verarbeitet.
Bekommt die dann auch die Globalen Variaben wie z.b. hier %N% und %F%???

Oder kan man das auch ander Lösen?
Also mit deinen Sprungmarke das :Read hier zuendeist und es wieder zur For Schleife Springen soll.

Edit:

Vom Code her Fungtionier es Perfekt.
Jetzt hab ich nur noch das Problem mit dem einbauen in das Programm
pieh-ejdsch
pieh-ejdsch 11.07.2012 aktualisiert um 15:39:58 Uhr
Goto Top
moin Darkprodukt,

Wenn Du Den Code in einen Batch einfügen willst, musst Du hinter Zeile 18 die Unteroutine mit exit /b 0
beenden.

Der Code soll nach der Zeile 12 beim Batch weitermachen (goto :hierweiter) statt exit /b.
Die Marke :hierWeiter ist dann der Abschluss vom Codeschnipsel.


Oben angepasst zum einfügen

Gruß Phil
Darkprodukt
Darkprodukt 11.07.2012 aktualisiert um 16:10:57 Uhr
Goto Top
Ok danke

Das mit goto :hierweiter ist nicht nötig :D

Das Batch Programm hat ein auswahl Menp und ist kein Stapelprogramm .

Ich häng den :Read schnippsel ganz ans ende zu den Anderen kleinen Unterfungtionen ^^
Bin das auch so von C++ gewöhnt

Hab Wandler wieder gefunden ... hier der Link
http://igames.inside1.net/html/dosa4.htm

Einfach auf WANDLER klicken und downloaden

Allerdings bin ich schon dabei ein Programm zu schreiben was das gleiche kan,
aber auch Windows 64 Bit Kompartibel ist. Das ist nehmlich Wandler nicht. Leider.

Grüße Darkprodukt
pieh-ejdsch
pieh-ejdsch 11.07.2012 um 18:42:09 Uhr
Goto Top
das mit dem anfügen der SubFunktion ganz ans Ende der Batch - heisst aber auch die ganze Batch wird nach der Sprungmarke :SubFunktion durchsucht. Das nimmt wieder etwas extra viel Zeit in Anspruch.

Wenn Du die SubFuntion Direkt nach der Hauptfuntion (egal welche Programmiesprache) einfügst, dann ist der Weg zur Subfunktion kürzer. Somit auch die Zeit.
Danach (hinter der Sub) kommt der nächste Befehl.

Der Wandler wäre für für Deine Zeile entsprechend in Batch:
@echo off
setlocal
>("%TEMP%\withunderlines" (for /f "usebackq delims=" %%i in ("%TEMP%\tempdatn.txt" ) do set "Line=%%i" ^  
  &setlocal enabledelayedexpansion ^
  &set "Line=!Line:.=_!" ^  
  &set "Line=!Line:Ep=_!" ^  
  &set "Line=!Line: =_!" ^  
  &(echo(!Line!) ^
  &endlocal
)
move "%temp%\withunderlines" "%TEMP%\tempdatn.txt"  
und geht auch bei 64Bit Win7.

Gruß Phil
Darkprodukt
Darkprodukt 11.07.2012 aktualisiert um 20:58:55 Uhr
Goto Top
Ok und wie würde ich die Fungtionen machen???

for /f "eol=/" %%i in ('type "CLRLIB.txt"') do .wandler\wandler %TEMP%\tempdatn.txt /Q /L /T /:%%i /:_  


for /l %%i in ('1,1,9') do .wandler\wandler %TEMP%\tempdatn.txt /Q /L /T /:_%%i_ /:_0%%i_  

CLRLIB.txt ist eine datei in der Zeilenweise wörter stehen die einfach gelöscht werden sollen

Kann man auch eine Batch schreiben die man mit Parametern, wie Wandler, ansteuern kan?

Und das wichtigste, wie kan ich Lehrzeichen am Zeilenanfang und Ende Löschen?

Edit:

Die Klammer vor "withunderlines" muss weg sonst fungtioniert es nicht...

Bin gerade am Testen und so fungtionierts mal nicht
@echo off & setlocal

>"withunderlines" (for /f "usebackq delims=" %%i in ("tempdatn.txt" ) do (   
  set "Line=%%i" &&  
  for /f %%f in ('type "CLRLIB.txt"') do (   
    set "CL=%%f" ^  
    &setlocal enabledelayedexpansion ^
    &set "Line=!Line:!CL!=_!" ^  
    &set "Line=!Line:.=_!" ^  
    &set "Line=!Line:Ep=_!" ^  
    &set "Line=!Line: =_!" ^  
    &echo\!Line! ^
    &endlocal
    )
  )
) 
move "withunderlines" "Output.txt"  

Ist es in dem zusammenhang wie in Zeile 8 Überhaupt möglich eine Variable so zu verwenden?

Edit2:
Alle meine Ideen versagen ;(

@echo off & setlocal
type >Output.txt

for /f "usebackq delims=" %%i in ("tempdatn.txt") do (  
	set "Line=%%i"  
	for /f "usebackq eol=/ delims=" %%f in ('type "CLRLIB.txt"') do (  
		set "CL=%%f"  
		setlocal enabledelayedexpansion
		set !CL!
		echo !Line!>>Output.txt
		endlocal
		)
	)

In der CLRLIB.txt steht dan sowas wie:
"Line=!Line:h264=_!"  
"Line=!Line:x264!=_!"  
"Line=!Line:1280x720=_!"  
"Line=!Line:768x432=_!"  
"Line=!Line:720p=_!"  
"Line=!Line:AAC=_!"  
"Line=!Line:HD=_!"  

Es liegt ziemlich sicher an Zeile 7 da ich bestimmt nicht in eine Variable CL sowas eintragen kan "Line=!Line:h264=_!"
Darkprodukt
Darkprodukt 11.07.2012 um 21:27:00 Uhr
Goto Top
So ist auch nicht mehr Wichtig

Ist eh nicht mehr im Themenbereich und ich setze jezt mein ganzen Projekt in C++ um,
was die sache mit Wandler erheblich vereinfacht.

Grüße
Darkprodukt