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

Diverse Verzeichnisse per script nach txt durchsuchen und verschieben

Frage Entwicklung Batch & Shell

Mitglied: minicoop

minicoop (Level 1) - Jetzt verbinden

29.01.2010, aktualisiert 13:33 Uhr, 4066 Aufrufe, 13 Kommentare

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
Mitglied: Snowman25
29.01.2010 um 13:41 Uhr
Siehe hier: Flach kopieren

Wenn du
01.
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
Bitte warten ..
Mitglied: bastla
29.01.2010 um 13:58 Uhr
@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
Bitte warten ..
Mitglied: Snowman25
29.01.2010 um 14:03 Uhr
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
Bitte warten ..
Mitglied: bastla
29.01.2010 um 14:04 Uhr
@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
Bitte warten ..
Mitglied: Snowman25
29.01.2010 um 14:15 Uhr
@bastla
Hab doch anfangs shcon geschrieben, dass es noch angepasst werden muss ;)

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

Sry, anfangs war 'n Tippfehler drin
Bitte warten ..
Mitglied: bastla
29.01.2010 um 14:37 Uhr
@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
Bitte warten ..
Mitglied: minicoop
29.01.2010 um 14:37 Uhr
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
Bitte warten ..
Mitglied: bastla
29.01.2010 um 14:42 Uhr
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
Bitte warten ..
Mitglied: Snowman25
29.01.2010 um 14:46 Uhr
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]
Bitte warten ..
Mitglied: minicoop
29.01.2010 um 14:58 Uhr
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..
Bitte warten ..
Mitglied: Biber
05.02.2010 um 13:19 Uhr
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
Bitte warten ..
Mitglied: Snowman25
05.02.2010 um 13:24 Uhr
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
Bitte warten ..
Mitglied: minicoop
08.02.2010 um 08:51 Uhr
Hallo,

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

aber ja, kann geschlossen werden.
Bitte warten ..
Ähnliche Inhalte
Java
gelöst Net user per script aus txt oder csv für FTP (15)

Frage von OlliPWS zum Thema Java ...

Batch & Shell
gelöst Inhalt einer .txt per Script bearbeiten (2)

Frage von hanni007 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von 126594 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von Pedant zum Thema Batch & Shell ...

Microsoft

Restrictor: Profi-Schutz für jedes Window

(6)

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft Office
Saubere HTML aus Word-Dokument (16)

Frage von peterpa zum Thema Microsoft Office ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...

Hosting & Housing
gelöst Webserver bei WIX, aber DNS Server wo anders (9)

Frage von laster zum Thema Hosting & Housing ...