Frage ist gelöstTextdateien aus mehreren Unterordnern in einen anderen Ordner auf einer anderer Partition herauskopieren, miteinander vergleichen und die Ergebnisse als neue Texdateien in diesem neuen Ordner ausgeben.
04.08.2011
12:01:37 Uhr809 Aufrufe
10 Antworten
12:01:37 Uhr
10 Antworten
Noch nicht bewertet
Hallo an alle!
Auf dem Laufwerk E: befindet sich ein Ordner namens "Autoteile" mit 5 Unterordnern "Alle", "Toyota", "Mazda", "Daihatsu", "Subaru" Jeder von diesen Ordnern beinhaltet eine Textdatei mit Seriennummern zu verschiedenen Autoteilen. Einige davon sind identisch. Auf dem Laufwerk C: befindet sich ein leeres Ordner namens "Vergleich".
Die Aufgabe:
1) Alle Textdateien aus den Unterverzeichnissen auf dem Laufwerk E ins Verzeichnis "Vergleich" kopieren (nicht verschieben und ohne Ordner!).
2) Die Inhalte der kopierten Texdateien von 4 Unterordner: "Toyota", "Mazda", "Subaru", "Daihatsu" mit dem Inhalt der Textdatei aus dem Verzeichnis "Alle" vergleichen. Dabei sollten nur die gleichen Zeilen in eine neue Textdatei herausgegeben werden.
3) Nach der Sichtung der erstellten Textdateien sollen alle Dateien im Verzeichnis "Vergleich" wieder gelöscht werden.
Ich habe das Problem wie folgt gelöst, möchte aber was kompakteres sehen (nur per Batch!!!):
Danke im Voraus!
Philipp Takitano
Die Aufgabe:
1) Alle Textdateien aus den Unterverzeichnissen auf dem Laufwerk E ins Verzeichnis "Vergleich" kopieren (nicht verschieben und ohne Ordner!).
2) Die Inhalte der kopierten Texdateien von 4 Unterordner: "Toyota", "Mazda", "Subaru", "Daihatsu" mit dem Inhalt der Textdatei aus dem Verzeichnis "Alle" vergleichen. Dabei sollten nur die gleichen Zeilen in eine neue Textdatei herausgegeben werden.
3) Nach der Sichtung der erstellten Textdateien sollen alle Dateien im Verzeichnis "Vergleich" wieder gelöscht werden.
Ich habe das Problem wie folgt gelöst, möchte aber was kompakteres sehen (nur per Batch!!!):
01.
@echo off & setlocal 02.
03.
set "Ziel=C:\Vergleich" 04.
set "Start1=E:\Autoteile\Alle" 05.
set "Start2=E:\Autoteile\Toyota" 06.
set "Start3=E:\Autoteile\Mazda" 07.
set "Start4=E:\Autoteile\Daihatsu" 08.
set "Start5=E:\Autoteile\Subaru" 09.
10.
pushd "%Ziel%" 11.
12.
xcopy "%Start1%" "%Ziel%" /q /y 13.
xcopy "%Start2%" "%Ziel%" /q /y 14.
xcopy "%Start3%" "%Ziel%" /q /y 15.
xcopy "%Start4%" "%Ziel%" /q /y 16.
xcopy "%Start5%" "%Ziel%" /q /y 17.
18.
comm -12 alle.txt toyouta.txt > vergleich_toyota.txt 19.
comm -12 alle.txt mazda.txt > vergleich_mazda.txt 20.
comm -12 alle.txt daihatsu.txt > vergleich_daihatsu.txt 21.
comm -12 alle.txt subaru.txt > vergleich_subaru.txt 22.
23.
echo. 24.
echo Sehen Sie sich die Ergebnisse im Verzeichnis "%Ziel%" an. 25.
echo. 26.
PAUSE 27.
28.
29.
del "%Ziel%" /s 30.
31.
goto :eofDanke im Voraus!
Philipp Takitano
takitano schreibt am 04.08.2011 um 12:07:55 Uhr
Ich habe hier gesucht und (Danke an Bastla!
) so was zusammen gebastelt, aber es funktioniert nicht:
01.
@echo off & setlocal 02.
03.
set "Ziel=C:\Vergleich" 04.
set "Start=E:\Autoteile" 05.
set "Typ=txt" 06.
07.
for /r "%Start%" %%i in (*.%Typ%) do call :ProcessFile "%%i" 08.
09.
:ProcessFile 10.
copy %1 "%Ziel%" 11.
12.
comm -12 alle.txt toyouta.txt > vergleich_toyota.txt 13.
comm -12 alle.txt mazda.txt > vergleich_mazda.txt 14.
comm -12 alle.txt daihatsu.txt > vergleich_daihatsu.txt 15.
comm -12 alle.txt subaru.txt > vergleich_subaru.txt 16.
17.
echo. 18.
echo Sehen Sie sich die Ergebnisse im Verzeichnis "%Ziel%" an. 19.
echo. 20.
PAUSE 21.
22.
del "%Ziel%" /s 23.
24.
goto :eof
Skyemugen schreibt am 04.08.2011 um 12:14:05 Uhr
Aloha,
du solltest wohl erst einmal :ProcessFile abschließen, da momentan ab Zeile 10 alles dazugehört aber eigentlich ab Zeile 12 ja wieder das Hauptskript sein sollte, du also in Zeile 11 goto :eof hinzufügen solltest und dann entweder ein goto :irgendwas direkt nach der Schleife setzt oder aber den :ProcessFile ganz ans Ende setzt, da dieser sonst erneut aufgerufen wird.
Und zum Testen bitte echo on und funktioniert nicht ist ein wenig ungenau.
greetz André
du solltest wohl erst einmal :ProcessFile abschließen, da momentan ab Zeile 10 alles dazugehört aber eigentlich ab Zeile 12 ja wieder das Hauptskript sein sollte, du also in Zeile 11 goto :eof hinzufügen solltest und dann entweder ein goto :irgendwas direkt nach der Schleife setzt oder aber den :ProcessFile ganz ans Ende setzt, da dieser sonst erneut aufgerufen wird.
Und zum Testen bitte echo on und funktioniert nicht ist ein wenig ungenau.
greetz André
Friemler schreibt am 04.08.2011 um 12:25:01 Uhr
Hallo takitano,
teste mal das hier:
Gruß
Friemler
teste mal das hier:
01.
@echo off & setlocal 02.
03.
set "Quelle=E:\Autoteile" 04.
set "Ziel=E:\Vergleich" 05.
set "Master=Alle.txt" 06.
07.
for /d %%f in ("%Quelle%\*.*") do ( 08.
xcopy "%%f" "%Ziel%" /q /y > NUL 09.
) 10.
11.
for /f "delims=" %%f in ('dir /b /a:-d "%Ziel%\*.txt" 2^>NUL ^| findstr /i /v /e /c:"%Master%"') do ( 12.
comm -12 "%Ziel%\%Master%" "%Ziel%\%%f" > "%Ziel%\Vergleich_%%f" 13.
) 14.
15.
echo. 16.
echo Sehen Sie sich die Ergebnisse im Verzeichnis "%Ziel%" an. 17.
echo. 18.
pause 19.
20.
del /s "%Ziel%"Gruß
Friemler
takitano schreibt am 04.08.2011 um 12:39:55 Uhr
Zitat von Skyemugen:
Aloha,
beim testen arbeitet man entweder
greetz André
@Friemler, gib' den Usern doch nicht immer harte del Befehle, die machen nur klick, klick *gg*
Aloha,
beim testen arbeitet man entweder
- mit Testdateien
- mit echo del, sprich Vorschaubefehlen
greetz André
@Friemler, gib' den Usern doch nicht immer harte del Befehle, die machen nur klick, klick *gg*
Das weiß ich, Habe doch meine 2.Kopien gelöscht!









