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, 4048 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...