Suche nach Dateien über Liste

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
Dennis_Stevens
Senior Member
Senior Member
Posts: 217
Joined: 2013-06-08, 16:16 UTC
Location: NRW, Germany

Suche nach Dateien über Liste

Post by *Dennis_Stevens »

Moin! :)

einleitend eine kurze Geschichte zu Erläuterung:
Wenn ich Fotos auf den Computer kopiere, landen diese stets zuerst in einem temporären Verzeichnis. Sobald ich auch von meiner Frau und von den Smartphones alle Bilder habe, beginne ich mit der Verteilung der Fotos in ihre endgültigen Verzeichnisse.

Vor ein paar Tagen hat sich der Sync meines NAS einen deftigen Aussetzer geleistet. Das o.g. temporäre Verzeichnis war eigentlich leer, weil ich alle Fotos verteilt hatte. Der Sync-Dienst hat aber ein Backup zurückgespielt, was dazu führte, dass nun alle Bilder in den TEMP-Ordner zurück kopiert wurden. Leider weiss ich aber nicht, ob nun die ganzen neuen Verzeichnisse, in denen die Bilder eigentlich liegen sollten noch (vollständig) vorhanden sind.
Weil das sehr viele Bilder sind, müsste ich jetzt mühsam Datei für Datei durchgehen, um nach zu sehen, ob sie sich auch wirklich in den Verzeichnissen befinden, in welche ich sie vor ein paar Tagen kopiert habe.

Jetzt hatte ich die Idee, dieses TEMP-Verzeichnis quasi als Quelle der Suche zu benutzen, um die Festplatte nach den dort befindlichen Dateinamen zu durchsuchen.
Im besten Fall bekäme ich jeden Dateinamen doppelt angezeigt und wüsste, dass ich die Datei im Temp-Ordner löschen kann.

Zusammenfassend meine Frage an das Forum:
Kann ich dem TC eine Dateinamenliste oder sogar den Inhalt eines ganzen Quellverzeichnisses zur Suche übergeben?

Viele Grüße und einen sonnigen Sonntag!
#230412 Single User Licence
Commanding Win10 64bit totally with version 11
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6950
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Post by *Horst.Epp »

Schon mal im Suchfeld auf F1 gedrückt ?
Da kommnt dann z.B.

@c:\path\filelist.txt.
The file must contain one file/directory name per line, either an absolute path, or relative to the location of the list file.
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Doppelte Dateien finden

Post by *Stefan2 »

Solch umfangreiche Wartungsarbeiten kann man auch über ein Skript automatisieren.

Zum Beispiel:

Suchen in einer DOS-Box:

C:\>for /f "tokens=*" %a in ('dir /b c:\temp\*.exe') do @dir /s /b "%a"

C:\temp\sed.exe
C:\Windows\sed.exe
C:\temp\split.exe
C:\temp\Test Datei.exe
C:\util\Test Datei.exe
C:\Windows\Test Datei.exe





Die Ausgabe kann man in eine Liste schreiben:
C:\>for /f "tokens=*" %a in ('dir /b c:\temp\*.exe') do @dir /s /b "%a" >>C:\temp\zzzListe.txt


Dann kann man vor alle Zeilen mit bereits kopierten Dateien ein "Del" schreiben und die anderen Zeilen löschen:

DEL C:\temp\sed.exe
REM C:\Windows\sed.exe - auskommentiert, bzw. löschen
REM C:\temp\split.exe
DEL C:\temp\Test Datei.exe
REM C:\util\Test Datei.exe
REM C:\Windows\Test Datei.exe



Als *.CMD speichern und den TEMP Ordner automatisch aufräumen lassen.


.
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1049
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

Als PowerShell-Skript:

Code: Select all

#---Anpassen--
$srcFolder = "c:\Temp\"
$dstFolder = "\\NAS\Fotos\"
$sortFolder = "c:\Temp\FehlendeFotos\"
#---

$filesInSrc = Get-ChildItem -Path $srcFolder
$filesInDst = Get-ChildItem -Path $dstFolder -Recurse

foreach ($fileSrc in $filesInSrc)
{
	$found = $false

	foreach ($fileDst in $filesInDst)
	{
		if ($fileSrc.Name -eq $fileDst.Name)
		{
			Echo "$($fileSrc.Name) existiert in $($fileDst.DirectoryName)"
			$found = $true
		}
	}

	if ($found -eq $false)
	{
		Echo "$($fileSrc.Name) existiert NICHT in Dest!"
		Copy-Item -Path $fileSrc.FullName -Destination $sortFolder
	}
}
Kopiert fehlende Dateien in den $sortFolder
Dennis_Stevens
Senior Member
Senior Member
Posts: 217
Joined: 2013-06-08, 16:16 UTC
Location: NRW, Germany

Post by *Dennis_Stevens »

Horst.Epp wrote:Schon mal im Suchfeld auf F1 gedrückt ?
Da kommnt dann z.B.

@c:\path\filelist.txt.
The file must contain one file/directory name per line, either an absolute path, or relative to the location of the list file.
Naja...das habe ich ausprobiert. Aber in der Hilfe steht ja auch "der zu durchsuchenden" Dateien und Verzeichnisse. Bedeutet, ich kann in dieser Liste alle Verzeichnisse angeben, die ich durchsuchen möchte, aber nicht die Dateinamen der Dateien, die ich suche ...
Ich suche nach Dateien, die sich im Verzeichnis F:\temp befinden auf ALLEN anderen Festplatten.
#230412 Single User Licence
Commanding Win10 64bit totally with version 11
Dennis_Stevens
Senior Member
Senior Member
Posts: 217
Joined: 2013-06-08, 16:16 UTC
Location: NRW, Germany

Re: Doppelte Dateien finden

Post by *Dennis_Stevens »

Stefan2 wrote:Solch umfangreiche Wartungsarbeiten kann man auch über ein Skript automatisieren.

Zum Beispiel:

Suchen in einer DOS-Box:

C:\>for /f "tokens=*" %a in ('dir /b c:\temp\*.exe') do @dir /s /b "%a"

C:\temp\sed.exe
C:\Windows\sed.exe
C:\temp\split.exe
C:\temp\Test Datei.exe
C:\util\Test Datei.exe
C:\Windows\Test Datei.exe





Die Ausgabe kann man in eine Liste schreiben:
C:\>for /f "tokens=*" %a in ('dir /b c:\temp\*.exe') do @dir /s /b "%a" >>C:\temp\zzzListe.txt


Dann kann man vor alle Zeilen mit bereits kopierten Dateien ein "Del" schreiben und die anderen Zeilen löschen:

DEL C:\temp\sed.exe
REM C:\Windows\sed.exe - auskommentiert, bzw. löschen
REM C:\temp\split.exe
DEL C:\temp\Test Datei.exe
REM C:\util\Test Datei.exe
REM C:\Windows\Test Datei.exe



Als *.CMD speichern und den TEMP Ordner automatisch aufräumen lassen.


.
Läuft!

Danke!


Aber wäre das nicht klasse, wenn TC das auch könnte?

Grüße und Dank an Euch!

Dennis
#230412 Single User Licence
Commanding Win10 64bit totally with version 11
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6950
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Post by *Horst.Epp »

Dennis_Stevens wrote:
Horst.Epp wrote:Schon mal im Suchfeld auf F1 gedrückt ?
Da kommnt dann z.B.

@c:\path\filelist.txt.
The file must contain one file/directory name per line, either an absolute path, or relative to the location of the list file.
Naja...das habe ich ausprobiert. Aber in der Hilfe steht ja auch "der zu durchsuchenden" Dateien und Verzeichnisse. Bedeutet, ich kann in dieser Liste alle Verzeichnisse angeben, die ich durchsuchen möchte, aber nicht die Dateinamen der Dateien, die ich suche ...
Ich suche nach Dateien, die sich im Verzeichnis F:\temp befinden auf ALLEN anderen Festplatten.
Das liest du falsch !
Unter Search in eingetragen wird nach Files oder Verzeichnissen aus der Liste gesucht.
Und das funktioniert auch, gerade nochmal getested.
Dennis_Stevens
Senior Member
Senior Member
Posts: 217
Joined: 2013-06-08, 16:16 UTC
Location: NRW, Germany

Post by *Dennis_Stevens »

Horst.Epp wrote:
Dennis_Stevens wrote:
Horst.Epp wrote:Schon mal im Suchfeld auf F1 gedrückt ?
Da kommnt dann z.B.

@c:\path\filelist.txt.
The file must contain one file/directory name per line, either an absolute path, or relative to the location of the list file.
Naja...das habe ich ausprobiert. Aber in der Hilfe steht ja auch "der zu durchsuchenden" Dateien und Verzeichnisse. Bedeutet, ich kann in dieser Liste alle Verzeichnisse angeben, die ich durchsuchen möchte, aber nicht die Dateinamen der Dateien, die ich suche ...
Ich suche nach Dateien, die sich im Verzeichnis F:\temp befinden auf ALLEN anderen Festplatten.
Das liest du falsch !
Unter Search in eingetragen wird nach Files oder Verzeichnissen aus der Liste gesucht.
Und das funktioniert auch, gerade nochmal getested.
OK, bei mir klappt das nicht. Aber das Problem sitzt ja vor dem PC.
Im Verzeichnis D:\eigene dateien liegt die Datei Datalist.txt, in welcher nur die Dateinamen und nicht die Pfade stehen.

Ich trage in "Suche in" ein:
@D:\eigene dateien\datalist.txt

Suche nach lasse ich leer, weil es geht ja um Dateien aus der Liste.
Ich klicke "Suchen" ... und nichts passiert.

Was mache ich falsch?
#230412 Single User Licence
Commanding Win10 64bit totally with version 11
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

Dennis_Stevens wrote:...
Ich trage in "Suche in" ein:
@D:\eigene dateien\datalist.txt
...
Was mache ich falsch?
Ich hab's jetzt nicht ausprobiert und kenne mich damit nicht aus......
aber grundsätzlich sollte man Leerzeichen durch Anführungszeichen schützen:
@"D:\eigene dateien\datalist.txt"


Sonst sieht der Interpreter nur
@"D:\eigene" + "dateien\datalist.txt"

kA, oder sollte der TC die Leerzeichen selbstständig erkennen?

Aber wenn so was nicht funktioniert, immer mal mit Quotes probieren, oder mit Pfaden ohne Leerzeichen.
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6950
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Post by *Horst.Epp »

Dennis_Stevens wrote:
Horst.Epp wrote:
Dennis_Stevens wrote: Naja...das habe ich ausprobiert. Aber in der Hilfe steht ja auch "der zu durchsuchenden" Dateien und Verzeichnisse. Bedeutet, ich kann in dieser Liste alle Verzeichnisse angeben, die ich durchsuchen möchte, aber nicht die Dateinamen der Dateien, die ich suche ...
Ich suche nach Dateien, die sich im Verzeichnis F:\temp befinden auf ALLEN anderen Festplatten.
Das liest du falsch !
Unter Search in eingetragen wird nach Files oder Verzeichnissen aus der Liste gesucht.
Und das funktioniert auch, gerade nochmal getested.
OK, bei mir klappt das nicht. Aber das Problem sitzt ja vor dem PC.
Im Verzeichnis D:\eigene dateien liegt die Datei Datalist.txt, in welcher nur die Dateinamen und nicht die Pfade stehen.

Ich trage in "Suche in" ein:
@D:\eigene dateien\datalist.txt

Suche nach lasse ich leer, weil es geht ja um Dateien aus der Liste.
Ich klicke "Suchen" ... und nichts passiert.

Was mache ich falsch?
Das Problem ist wohl, dass TC in der Liste absolute Pfade oder relativ zum Pfad der Fileliste erwartet. Wird also deinem Problem nicht gerecht.
Sorry. :oops:
matbal
Member
Member
Posts: 182
Joined: 2004-11-28, 19:40 UTC

Post by *matbal »

So richtig verstehe ich die Logik auch nicht.

Bei meinen Tests habe ich festgestellt; wenn der Suchbegriff in der Datei ein * enthält, dann sucht der TC auch in Unterverzeichnissen.

Dann könnte es vielleicht schon ausreichen, an die Dateinamen ein * anzuhängen...

Code: Select all

Datei1.jpg*
Datei2.jpg*
Dennis_Stevens
Senior Member
Senior Member
Posts: 217
Joined: 2013-06-08, 16:16 UTC
Location: NRW, Germany

Post by *Dennis_Stevens »

matbal wrote:So richtig verstehe ich die Logik auch nicht.

Bei meinen Tests habe ich festgestellt; wenn der Suchbegriff in der Datei ein * enthält, dann sucht der TC auch in Unterverzeichnissen.

Dann könnte es vielleicht schon ausreichen, an die Dateinamen ein * anzuhängen...

Code: Select all

Datei1.jpg*
Datei2.jpg*
Jep! Das funktioniert sogar!
Die einzige Einschränkung ist, dass sich die Dateien auf derselben Festplatte in Unterverzeichnissen der Dateiliste befinden müssen...was Sinn macht.
Jetzt verstehe ich auch Horst.Epp :)

Im Grunde ist das die Funktion, die ich suche, hat aber den wenig charmanten Nachteil, dass man in der Suchliste hinter jeden Dateinamen ein * setzen muss. Ist dann wieder mit Arbeit verbunden, die bei einer umfangreichen Wartung wie der vorliegenden zwar einen in Kauf zu nehmenden Zeitaufwand bedeutet, aber irgendwie den Beigeschmack hat, von hinten durch die Brust ins Auge zu funktionieren und eben nicht alle Laufwerke berücksichtigt. In meinem Fall wäre aber genau das der Clou!
#230412 Single User Licence
Commanding Win10 64bit totally with version 11
Dennis_Stevens
Senior Member
Senior Member
Posts: 217
Joined: 2013-06-08, 16:16 UTC
Location: NRW, Germany

Post by *Dennis_Stevens »

Es würde in diesem Falle ausreichen, wenn man sowas machen könnte:

Suchen in:
@f:\datalist.txt;@d:\datalist.txt

Geht aber leider nicht...
#230412 Single User Licence
Commanding Win10 64bit totally with version 11
Post Reply