minicoop
Goto Top

Diverse Verzeichnisse per script nach txt durchsuchen und verschieben

Hallo,

ich stehe gerade auf dem schlauch und benötige eure Hilfe:

folgender problematik:
in c:\batches6c
gibt es diverse unterordner,
batch001
batch002 usw.
in diesen unterordnern befinden sich dateien, hier mit der endung txt; doppelte Namen kann man ausschliessen.
gewünscht ist eigentlich nur, diese aus den verzeichnissen raus in ein sammelverzeichnis zu legen,
zur weiteren verarbeitung..

ich suche mir alle möglichen txt-dateien mit dir /s /b, diese ausgabe speichere ich mir zwischen in eine txt datei
und dann möchte ich das ganze verschieben.
aber das verschieben klappt nicht. aus mir noch nicht erkenntlichen gründen..

setzte ich ein echo vor meinem verschieben, kommt folgende ausgabe:
for /f "delims=" %d in ('findstr /e /i "C:\Batches6C\Batch001\10.txt" c:\ziel\gefunden.txt') do (move C:\Batches6C\Batch001\10.txt C:\ziel\out)
for /f "delims=" %d in ('findstr /e /i "C:\Batches6C\Batch001\11.txt" c:\ziel\gefunden.txt') do (move C:\Batches6C\Batch001\11.txt C:\ziel\out)
for /f "delims=" %d in ('findstr /e /i "C:\Batches6C\Batch002\20.txt" c:\ziel\gefunden.txt') do (move C:\Batches6C\Batch002\20.txt C:\ziel\out)
for /f "delims=" %d in ('findstr /e /i "C:\Batches6C\Batch002\21.txt" c:\ziel\gefunden.txt') do (move C:\Batches6C\Batch002\21.txt C:\ziel\out)
for /f "delims=" %d in ('findstr /e /i "C:\Batches6C\Batch003\30.txt" c:\ziel\gefunden.txt') do (move C:\Batches6C\Batch003\30.txt C:\ziel\out)


und hier das script.

@echo off & setlocal

REM Variablen setzen

set "quelle=C:\Batches6C"
set "ziel=C:\ziel\out"
set "gefundene=c:\ziel\gefunden.txt"
set Ext=.txt

set Prefix=Batch

REM Prüfung ob txt's und verzeichnisse überhaupt vorhanden sind
if not exist dir /b /s %quelle%\*%EXT% GOTO :EOF
if exist %gefundene% del %gefundene% /f
if not exist %ziel% mkdir %ziel%

:LOS
rem zeige mir alle txt dateien:
dir /s /b %quelle%\*%Ext%>%gefundene%

for /f "delims=" %%i in (%gefundene%) do call :ProcessFile "%%i"
goto :eof

:ProcessFile
for /f "delims=" %%d in ('findstr /e /i "%~1" %gefundene%') do (move %~1 %ziel%)

:EOF


Danke für eure Hilfe.

Nedim

Content-Key: 134692

Url: https://administrator.de/contentid/134692

Printed on: April 25, 2024 at 06:04 o'clock

Member: Snowman25
Snowman25 Jan 29, 2010 at 12:41:27 (UTC)
Goto Top
Siehe hier: Flach kopieren

Wenn du
for /R /D %a in (*) do copy "%a" C:\Test  

Noch ein wenig anpasst (test auf .txt etc.) dann hast du schon 'ne lösung

greetz Snow
Member: bastla
bastla Jan 29, 2010 at 12:58:32 (UTC)
Goto Top
@Snowman25
Wozu das "/D" ?
Falls es übrigens tatsächlich darum ginge, Dateien mit einem bestimmten Inhalt (zB "Teil 3") zu suchen, würde ein für eine Schleife passendes "findstr" etwa so aussehen:
findstr /m /s /i /c:"Teil 3" "C:\Batches6C\*.txt"
Grüße
bastla
Member: Snowman25
Snowman25 Jan 29, 2010 at 13:03:05 (UTC)
Goto Top
damit Unterordner durchlaufen werden.
/R /D durchläuft den kompletten Tree vom Workdirectory aus
/D nur eine ebene von unterordnern

Auch zu sehen in dem von mir eingefügtem Link

greetz Snow
Member: bastla
bastla Jan 29, 2010 at 13:04:12 (UTC)
Goto Top
@Snowman25
Da ja nur Dateien gesucht sind, genügt doch "/R" - mit "/R /D" erhältst Du als Ergebnis ja nur Ordner ...

Grüße
bastla
Member: Snowman25
Snowman25 Jan 29, 2010 at 13:15:50 (UTC)
Goto Top
@bastla
Hab doch anfangs shcon geschrieben, dass es noch angepasst werden muss ;)

also passe ich das ganze jetzt mal an...
for /R %%B in (*) do (
	if %%~xB==.txt (
			copy "%%B" C:\Test  
	)
)

Anmerkung: getestet

Sry, anfangs war 'n Tippfehler drin
Member: bastla
bastla Jan 29, 2010 at 13:37:56 (UTC)
Goto Top
@Snowman25
... wenn Du schon am Anpassen bist - wie wär's mit:
for /R %%B in (*.txt) do copy "%%B" C:\Test >nul
Grüße
bastla
Member: minicoop
minicoop Jan 29, 2010 at 13:37:57 (UTC)
Goto Top
owei owei..

habe mich jetzt beim "flach kopieren" durchgelesen...

das scheint mir doch umfangreicher zu sein als gedacht..
zumal ich ja nur eine unterbene durchsuchen muss.

melde mich nach dem testen erneut...

gruss
Member: bastla
bastla Jan 29, 2010 at 13:42:01 (UTC)
Goto Top
Hallo minicoop!
zumal ich ja nur eine unterbene durchsuchen muss.
... weil es nur die eine Ebene gibt, oder weil darunter liegende Ebenen ausrücklich ausgenommen werden sollen?

Im ersten Fall wär's egal, und im zweiten Fall könnten wir doch noch das "/D" brauchen:
for /D %%b in ("C:\Batches6C\*.*") do copy "%%b\*.txt" "C:\ziel\out" >nul
Grüße
bastla
Member: Snowman25
Snowman25 Jan 29, 2010 at 13:46:03 (UTC)
Goto Top
mensch bastla,

jetzt lass ihn doch erst mal testen. :P

[[>nul]] ist auch nur 'ne Schönheits-OP
und Soweit ich das getestet hab (Script auf meine Eigenen Dateien losgelassen) werden auch Unterordner in beliebig tiefen Ebenen durchsucht.

greetz Snow

[EDIT: nicht gelesen, dass es 'ne ausnahme geben könnte]
Member: minicoop
minicoop Jan 29, 2010 at 13:58:45 (UTC)
Goto Top
Hallo Bastla,

mein Hauptverzeichnis lautet
c:\Batches6C

C:\Batches6C>dir /b /s
C:\Batches6C\Batch001
C:\Batches6C\Batch002
C:\Batches6C\Batch003
C:\Batches6C\Batch001\10.txt
C:\Batches6C\Batch001\11.txt
C:\Batches6C\Batch002\20.txt
C:\Batches6C\Batch002\21.txt
C:\Batches6C\Batch003\30.txt

aktuell sind dort jetzt drei Unterverzeichnisse, in denen ein paar txt dateien liegen.
es können mehrere Verzeichnisse werden, ich denke aber maximal 50,
aber nicht weiter verschachtelt.
Diese txt dateien wollte ich ja wegmoven, und danach die verzeichnisse löschen.

ich bin gerade noch dabei das script zu verstehen..
fällt mir aber recht schwer für einen freitag..
Member: Biber
Biber Feb 05, 2010 at 12:19:04 (UTC)
Goto Top
Moin minicoop,

Nachfrage:
Zitat von @minicoop:

ich bin gerade noch dabei das script zu verstehen..
fällt mir aber recht schwer für einen freitag..

Okay, okay... aber jetzt waren es schon fast ZWEI Freitage...
... plus ein paar andere Tage halbwegs in mitteleuropäischer Normalverteilung.

Bist du denn soweit gekommen, dass heute ein "Erledigt"-Haken dran könnte oder sind noch Fragen offen?

Grüße
Biber
Member: Snowman25
Snowman25 Feb 05, 2010 at 12:24:33 (UTC)
Goto Top
Ich glaub, du kannst hier zu machen Biber...
Letzer Login: gestern
Letzte Aktivität: Diverse Verzeichnisse per script nach txt durchsuchen und verschieben

greetz Snow
Member: minicoop
minicoop Feb 08, 2010 at 07:51:35 (UTC)
Goto Top
Hallo,

soso,
was immer mitgeloggt wird ..hähä

aber ja, kann geschlossen werden.