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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 134692
Url: https://administrator.de/forum/diverse-verzeichnisse-per-script-nach-txt-durchsuchen-und-verschieben-134692.html
Ausgedruckt am: 24.12.2024 um 13:12 Uhr
13 Kommentare
Neuester Kommentar
Siehe hier: Flach kopieren
Wenn du
Noch ein wenig anpasst (test auf .txt etc.) dann hast du schon 'ne lösung
greetz Snow
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
@Snowman25
Wozu das "
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 "
Grüße
bastla
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"
bastla
@Snowman25
Da ja nur Dateien gesucht sind, genügt doch "
Grüße
bastla
Da ja nur Dateien gesucht sind, genügt doch "
/R
" - mit "/R /D
" erhältst Du als Ergebnis ja nur Ordner ...Grüße
bastla
@bastla
Hab doch anfangs shcon geschrieben, dass es noch angepasst werden muss ;)
also passe ich das ganze jetzt mal an...
Anmerkung: getestet
Sry, anfangs war 'n Tippfehler drin
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
@Snowman25
... wenn Du schon am Anpassen bist - wie wär's mit:
Grüße
bastla
... wenn Du schon am Anpassen bist - wie wär's mit:
for /R %%B in (*.txt) do copy "%%B" C:\Test >nul
bastla
Hallo minicoop!
Im ersten Fall wär's egal, und im zweiten Fall könnten wir doch noch das "
Grüße
bastla
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
bastla
Moin minicoop,
Nachfrage:
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
Nachfrage:
ich bin gerade noch dabei das script zu verstehen..
fällt mir aber recht schwer für einen freitag..
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
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
Letzer Login: gestern
Letzte Aktivität: Diverse Verzeichnisse per script nach txt durchsuchen und verschieben
greetz Snow