justplay72
Goto Top

Ordner mit diversen möglichen Pfaden suchen

Hallo,
Ich habe folgendes Problem:
Ich muss auf der Arbeit des öfteren Daten suchen.
Diese daten können auf diverse Rechnern sein wobei dort wieder diverse unterordner sind.

Ich möchte gerne einen gewissen Ordner suchen finden und dann herunterkopieren.

Ich habe dafür bei jedem Rechner einen share Ordner eingerichtet um schneller auf den richtigen Quell Ordner zu kommen.
z.B \\Rechnername\doc$\ da sind danach noch mehrere unterordner z.B \\Rechnername\doc$\VM5\Oktober2020\15.10.2020\ und dann würde meine Datei kommen.

Nun habe ich aber 15 PC's wo ich eine gewisse seriennummer suchen muss. Ich öffne hier momentan 15 mal den file explorer und gib die Seriennummern ein, bis ich bei einem Rechner einen Treffer habe.


Nun meine Frage: gibt es eine möglichkeit eine Batchdatei oder änlichen zu machen die mir automatisch eine gewissen Seriennummer auf 15 verschiedenen Pfaden mit unterorder durchsucht? es soll kein .txt file oder ähnlichen gefunden werden sondern ein Ordner mit mehreren .csv files darin.

Teilweise muss ich bis zu 50 solcher ordner suchen. und das dauert sehr lange.
Hat einer von euch eine Idee?

wäre nett. mfg Thomas

Content-Key: 667087

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

Printed on: April 26, 2024 at 11:04 o'clock

Member: Justplay72
Justplay72 May 26, 2021 at 10:32:38 (UTC)
Goto Top
Achja meine Bemühungen sind im Sand verlaufen.... face-sad
mittels dem befehl "for" in einer Batchdatei, konnte ich bereits gewisse .txt files den pfad bestimmen und in einem textdocument speichern.
da ich aber keine .txt files habe sondern ordner deren pfad ich bestimmen möchte, funktioniert das leider nicht.
desweiteren kann auch sein, dass der Ordernamen icht nur die seriennummer beinhaltet, sondern oftmals noch etwas dazu geschireben, das ich im vorhinein nicht weis. die Ordner sind bis zu 3 Jahre alt.
Mitglied: 148121
148121 May 26, 2021 updated at 12:16:18 (UTC)
Goto Top
Powershell z.B.
$search = Read-Host "Suchbegriff eingeben"  
$computers = 'Computer1','Computer2','ComputerN'  
$computers | %{ls "\\$_\doc$" -Directory -Recurse -Filter "*$search*" | select -Expand FullName}  
Batch z.B.
@echo off
set /p "search=Suchbegriff eingeben"  
for %%a in (Computer1 Computer2 ComputerN) do dir /b /s /ad "\\%%a\doc$\*%search%*"  

Gruß w.
Member: Justplay72
Justplay72 May 26, 2021 at 12:35:49 (UTC)
Goto Top
Hallo Danke schon mal für deine Antwort!
Ich habe die rechnernamen eingefügt und bei Powershell gestartet.
Aber wie Speicher ich jetzt die korrekten gefundenen OrdnerPfade in ein Text file.
bzw. wie Kopiere ich die gefundenen Ordner auf ein von mir definierten Pfad?

z.B wenn ich den Ordner TEST123 suche.

mfg
Mitglied: 148121
Solution 148121 May 26, 2021 updated at 13:02:25 (UTC)
Goto Top
Für die Ausgabe in ein Textfile einfach hinten an die Pipe die Ausgabe an ein File leiten
$search = Read-Host "Suchbegriff eingeben"  
$computers = 'Computer1','Computer2','ComputerN'  
$computers | %{ls "\\$_\doc$" -Directory -Recurse -Filter "*$search*" | select -Expand FullName} | set-content 'D:\gefunden.txt'  
Wenn du stattdessen direkt kopieren willst
$search = Read-Host "Suchbegriff eingeben"  
$computers = 'Computer1','Computer2','ComputerN'  
$destination = 'D:\Ordner'  
$computers | %{ls "\\$_\doc$" -Directory -Recurse -Filter "*$search*"} | %{$cnt = 1 }{  
   $target = join-path $destination "found_$cnt"  
   while(Test-Path $target){$cnt++;$target = join-path $destination "found_$cnt"}  
   md $target -Force | out-null
   copy-item $_.Fullname -Destination $target -Recurse -verbose
   $cnt++
}
(um Duplikate zu verhindern bekommt jeder gefundene Ordner einen separaten neuen Namen im Zielverzeichnis), kannst du ja nach Belieben anpassen, Workflow ist uns ja unbekannt ...
Member: Justplay72
Justplay72 May 26, 2021 updated at 13:15:13 (UTC)
Goto Top
eine serien nummer besteht aus 17 zeichen: z.B 30874-20-31-05677

mit der batch datei finde ich aber viel mehr. kann es sein das hier nur auf eine gewisse übereinstimmung geschaut wird? ich will nur ordner finden, die diese nummer exakt im Namen haben. es kann dannach noch etwas stehenn z.B 30874-20-31-05677 FAIL dies sollte auch gefunden werden.

als ausgabe habe ich echo verwendet. das sollte so funktionieren oder?

*...   ) do dir /b /s /ad "\\%%a\doc$\*%search%*" echo %%a >> "C:\users\administrator\documents\log.txt"  

powershell hab ich zwar, aber ist nicht so mein fall. Kenn mich da leider nicht aus damit
Mitglied: 148121
Solution 148121 May 26, 2021 updated at 13:36:23 (UTC)
Goto Top
Zitat von @Justplay72:

eine serien nummer besteht aus 17 zeichen: z.B 30874-20-31-05677
Jop, kein Problem
mit der batch datei finde ich aber viel mehr. kann es sein das hier nur auf eine gewisse übereinstimmung geschaut wird?
Nein, alles was du eingibst wird so gefunden
ich will nur ordner finden, die diese nummer exakt im Namen haben. es kann dannach noch etwas stehenn z.B 30874-20-31-05677 FAIL dies sollte auch gefunden werden.
Ja kein Thema die Wildcards im dir befehl sorgen ja dafür.

als ausgabe habe ich echo verwendet. das sollte so funktionieren oder?
*...   ) do dir /b /s /ad "\\%%a\doc$\*%search%*" echo %%a >> "C:\users\administrator\documents\log.txt"  
> 
Nein. das ist falsch.
So lüppt dat
@echo off
set /p "search=Suchbegriff eingeben"  
>"C:\users\administrator\documents\log.txt" (for %%a in (Computer1 Computer2 ComputerN) do dir /b /s /ad "\\%%a\doc$\*%search%*")  
Member: Justplay72
Justplay72 May 26, 2021 updated at 13:26:13 (UTC)
Goto Top
The syntax of the command is incorrect.
kommt bei mir. Er erstellt zwar ein log file, aber dort sind irgendwelche Ordner gespeichert der mit meiner Serien nummer nicht.

@echo off
set /p "30874-20-31-05677"  
for %%a in (ALTM4004 ALTM4005 ALTM4022) do dir /b /s /ad "\\%%a\doc$\*%search%*" echo %%a >> "C:\Users\alttwiel\Documents\log.txt" (for %%a in (ALTM4004 ALTM4005 ALTM4022) do dir /b /s /ad "\\%%a\doc$\*%search%*")  


Am ALTM4004 sollte der ordner 30874-20-31-05677 sein
Mitglied: 148121
Solution 148121 May 26, 2021 updated at 13:48:04 (UTC)
Goto Top
Du verwendest ja auch den falschen code, hatte ich oben schon geschrieben! Ein echo ist da Bullshit "dir" macht ja schon eine Ausgabe!
Meine oben gepostete Zeile funktioniert hier einwandfrei (getestet)!

Alternativ kannst du es auch so mit findstr schreiben
@echo off
set /p "search=Suchbegriff eingeben"  
>"C:\users\administrator\documents\log.txt" (for %%a in (Computer1 Computer2 ComputerN) do (dir /b /s /ad "\\%%a\doc$" | findstr /ilc:"%search%"))  
Bitte beachten, Ordner werden rekursiv unterhalb des Shares gefunden! Wenn das nicht gewollt ist dann den Parameter /s beim dir Befehl weglassen.


btw. wenn es um schnelle Suchen geht würde ich mir mal
Everything
ansehen
Member: Justplay72
Justplay72 May 26, 2021 at 13:46:56 (UTC)
Goto Top
achso ich habe die zeile hinten zusätzlich angehängt^^
Wenn mans richtig macht funktionierts!!!!


DANKE DIR!!