Top-Themen

Aktuelle Themen (A bis Z)

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 Skript suche Ordner in Unterordner

Mitglied: Eifeladmin

Eifeladmin (Level 1) - Jetzt verbinden

29.11.2013 um 19:17 Uhr, 3040 Aufrufe, 6 Kommentare, 1 Danke

Hallo Community,

ich versuche aktuell ein Skript zu schreiben dem ich einen Pfad übergeben kann und dies dann einen gestimmten String in den Ordner- Namen der Unterordner sucht, wurde der String gefunden soll in diesen Ordner ein Inhalt kopiert werden, danach soll weiter gesucht werden.
Ich hab aber leider überhaupt keinen Ansatz dazu, ich habe bis dato immer nur mit festen Pfaden gearbeitet und weiß nicht wie ich die Pfade einlesen könnte.
Was ich bis jetzt im Internet gefunden habe, war mir nicht so ganz klar.
Hat jemand von Euch eine Idee für mich wie ich das Problem umsetzten könnte?

Viele Dank und Grüße
EA
Mitglied: colinardo
29.11.2013, aktualisiert um 23:39 Uhr
Hallo EA,
Powershell-Variante:
01.
param(
02.
    [Parameter(Mandatory=$true)]$folderSearch
03.
)
04.
$contentToCopy = "C:\Temp\DateiDieKopiertwerdensoll.csv"
05.
$suchbegriff = "DeinSuchbegriff"
06.
dir $folderSearch -Recurse | ?{$_.PSIsContainer -and $_.Name -like "*$suchbegriff*"} | %{copy-item $contentToCopy -Destination $_.FullName}
Das Powershellscript wird dann folgendermaßen aufgerufen:
deinscript.ps1 -folderSearch "C:\Suchordner"
Es durchläuft alle Unterordner des Ordners und sucht nach dem Begriff der in der Variablen $suchbegriff steht. Wird dieser gefunden, wird der Inhalt den du in der Variablen $contentToCopy angibst in diesen Ordner kopiert.

Hinweis: Sollten Pfade in dem Suchordner mit dabei sein, welche die max. Zeichenzahl von 248 überschreiten wird das Script einen Fehler auswerfen. Leider hat hier blöder weise die Powershell bzw. das .NET-Framework eine Beschränkung eingebaut

p.s. wenn du noch nie mit Powershell gearbeitet hast, musst du einmalig den folgenden Befehl in einer PS-Console ausführen um PS-Scripte ausführen zu dürfen:
01.
Set-ExecutionPolicy -RemoteSigned
Alternativ eine Variante mit VB-Script:
01.
Set args = WScript.Arguments
02.
If args.length > 0 Then
03.
	startFolder = args.Item(0)
04.
Else
05.
	WScript.Echo "Es fehlt der Parameter für den Suchordner"
06.
	WScript.Quit
07.
End If
08.

09.
'Der String den du suchst
10.
strSearch = "source"
11.
'Einzelnes File hineinkopieren
12.
fileToCopy = "C:\Temp\test.csv"
13.
'Alternativ einen ganzen Ordner hinein kopieren
14.
folderToCopy = "C:\TestQuellOrdnermitDateien"
15.

16.
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
17.
Set rootFolder = fso.GetFolder(startFolder)
18.
parseFolders rootFolder,True
19.

20.
Function parseFolders(strFldr,boolRecursion)
21.
	For each folder in strFldr.Subfolders
22.
		If InStr(1,folder.Name,strSearch,vbTextCompare) > 0 Then
23.
			fso.CopyFile fileToCopy, folder.Path & "\"
24.
			' Alternativ Kopieren eines ganzen Ordners
25.
			'fso.CopyFolder folderToCopy, folder.Path & "\"
26.
		End If
27.
	Next
28.
	
29.
	If boolRecursion Then
30.
		For Each subFolder in strFldr.SubFolders
31.
			parseFolders subFolder, True
32.
		Next
33.
	End If
34.
End Function
Der Aufruf erfolgt hier folgendermaßen:
cscript.exe //NOLOGO deinScript.vbs "C:\Suchpfad"
Du kannst dich hier entscheiden ob du nur eine einzelne Datei oder einen ganzen Ordner in den jeweiligen Zielordner kopieren willst Zeilen 12 oder 14. Dazugehörig die Zeilen 23/25 mit den jeweiligen Kopierbefehlen. Suchstring steht in Zeile 10.

Grüße Uwe
Bitte warten ..
Mitglied: bastla
29.11.2013, aktualisiert 02.12.2013
Hallo Eifeladmin!

Und als Batch (wenn tatsächlich alle Ordner unterhalb des Ausgangsordners - also auch Unter-Unterordner etc) berücksichtigt werden sollen, ungetestet etwa so:
01.
@echo off & setlocal
02.
set "String=Dein Suchstring"
03.
set "Inhalt=D:\Ein Inhalt.txt"
04.

05.
for /d /r %1 %%i in (*%String%*) do echo copy "%Inhalt%" "%%i"
06.
pause
Das "echo" vor dem "copy" simuliert (zum Testen) den Kopiervorgang nur, indem es den Kopierbefehl anzeigt - wenn Du es weglässt, wird tatsächlich kopiert. Die Ausgabe "1 Datei(en) kopiert." kannst Du übrigens mit einem ">nul" am Ende der Zeile verschwinden lassen.

Aufzurufen ist der Batch, wie gewünscht, mit Übergabe des Startordners als Parameter.

Sollte doch nur eine Unterordner-Ebene gemeint sein, die Zeile 5 durch
for /d %%i in ("%~1\*%String%*") do echo copy "%Inhalt%" "%%i"
ersetzen.

Grüße
bastla
Bitte warten ..
Mitglied: Eifeladmin
02.12.2013 um 08:23 Uhr
Hallo colinardo
Hallo bastla

das ist ja wirklich super!
Vielen herzlichen Dank, ich hatte mit ein Tipps gerechnet aber fast fertige Skripts.
Das ist echt super, ich schau es mir gleich an.

Vielen vielen Dank.

Viele Grüße
EA
Bitte warten ..
Mitglied: derhoeppi
04.12.2013 um 09:30 Uhr
Hallo,

nachdem ich erst einen neuen Beitrag eröffnet habe und auf diesen verlinkt wurde, muss ich hier doch noch einmal nachfragen. Ich habe ein Problem beim Durchsuchen von Windows 7 Benutzerprofilen.
Folgende Schleife habe ich bisher in Verwendung:

FOR /F "Tokens=*" %%A in ('dir /B "%APPDATA%\Mozilla\Firefox\Profiles\*.default"') DO set FFPROFILE=%%A

Mein Problem ist nun das ich mit dem Skript nur den aktuellen Benutzer berühre. Da wir jedoch auf den Systemen multiuserfähig sein wollen, möchte ich ebenfalls alle Benutzerprofile erreichen. Ich habe mir nun eine vorgeschaltete Schleife vorgestellt, die mir alle Benutzerprofile mit den Ordnern \Mozilla\Firefox ausgibt und diesen String in den oben vorhandenen String übergeben. Habt ihr einen Tipp für mich?
Bitte warten ..
Mitglied: bastla
04.12.2013, aktualisiert 09.12.2013
Hallo derhoeppi!

Du kannst dafür (und auch für die "*.default"-Ordner) wie oben gezeigt eine "for /d"-Schleife verwenden:
01.
for /d %%u in ("C:\Users\*") do (
02.
    FOR /D %%A in ("%%u\APPDATA\Roaming\Mozilla\Firefox\Profiles\*.default") DO set "FFPROFILE=%%A"
03.
)
Allerdings wirst Du entweder "delayedExpansion" oder ein Unterprogramm oder eine direkte Verarbeitung des gefundenen Pfades über die Varaible %%A benötigen ...

Grüße
bastla

[Edit] Überzähligen Apostroph (vor der schließenden Klammer) entfernt. [/Edit]
Bitte warten ..
Mitglied: derhoeppi
09.12.2013 um 06:59 Uhr
Hallo bastla,

vielen Dank. Ich werde die Schleife gleich einmal testen. Etwas ähnliches habe ich auch getestet, aber das Ergebnis war ähnlich der nun integrierten FOR-Schleife, obwohl es in anderen Benutzerprofilen ebenfalls *.Default-Ordner gibt.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel Such- und Vergleichsfunktion
gelöst Frage von oesi1989Microsoft Office15 Kommentare

Hallo zusammen, ich habe 2 Tabellen mit Name, Vorname und Arbeitgeber. 1. Tabelle Name Vorname Geb-Datum Arbeitgeber Straße Ort ...

Exchange Server
Such-Index nach Neuerstellung defekt
Frage von CoverianExchange Server

Guten Morgen zusammen, wir haben hier aktuell ein Problem das mir schlaflose Nächte bereitet. Es handelt sich um einen ...

Batch & Shell
Wlan-adapter such algorithmus in batch
gelöst Frage von TicoWriteBatch & Shell7 Kommentare

Hallo zusammen, Ich möchte einen Wlan-adpater such algorithmus in batch erstellen, dazu fehlt mir aber der befehl in Dos. ...

Exchange Server

Exchange-Fehler: 550 No such recipient here

gelöst Frage von GreysonExchange Server3 Kommentare

Hallo administrator.de, habe seit heute an meinem Exchange die Fehlermeldung: #550 No such recipient here Diese Meldung erhalte ich ...

Neue Wissensbeiträge
Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 1 StundeInternet

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 22 StundenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Windows 10

Windows 10 - Programme laufen schneller, wenn Sie mit Administratorrechten ausgeführt werden

Erfahrungsbericht von 1Werner1 vor 2 TagenWindows 1013 Kommentare

Moin, das wollte ich erst nicht glauben, aber es ist so. Wenn Ihr ein Programm mit Administratorrechten unter Windows ...

Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 3 TagenSicherheits-Tools8 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Heiß diskutierte Inhalte
Hardware
Telefonanlagen - Welche gibt es
Frage von Xaero1982Hardware38 Kommentare

Nabend Zusammen, ich suche eine neue TK Anlage und mein Auftraggeber will jetzt was völlig neues - State of ...

Server-Hardware
Kompatibilität Tray für HP Proliant DL385 G10 vs. G8, G9
Frage von chris123Server-Hardware19 Kommentare

Hallo, weiß einer der hier anwesenden, ob die Trays für 2,5 " HDDs zwischen einem DL 385 G10 und ...

Outlook & Mail
Office 365 mit Email-Profil installieren
gelöst Frage von 139221Outlook & Mail18 Kommentare

Hallo, kurz zu meiner Person: Vor ungefahr 10 Jahren habe ich eine Umschuldung zum Fachinformatiker für Systemintegration gemacht aber ...

LAN, WAN, Wireless
Intel(R) PRO Wireless 3945ABG
gelöst Frage von Leon509LAN, WAN, Wireless15 Kommentare

Hallo, habe ein Laptop Fujitsu (Intel, 4GB, 2GHz, Windos10, Intel(R) PRO/Wireless 3945ABG ) ein O2 DSL Anschluss Home50. Leider ...