charmeur
Goto Top

Suchen Kopieren auf definierten Laufwerken

Hallo zusammen, ich versuche mich aktuell mal wieder an einer Batch, ich bin hier auch teilweise fündig geworden, aber leider nicht 100%.

Ich versuche eine Batch für das Suchen und Kopieren anzupassen, es sollte möglich sein die Suche auf mehrere Laufwerke auszuweiten bzw. zu begrenzen, ausserdem wäre es schön nach mehreren Suchbegriffen Suchen zu können mein kleiner Ansatz wäre folgender... nicht lachen
Wäre jemand so nett ?


@echo off & setlocal
set Pfad1=A:\Users\Thoma\OneDrive\Desktop\1
set Pfad2=B:\Users\Thoma\OneDrive\Desktop\2
set Pfad3=C:\Users\Thoma\OneDrive\Desktop\3
set Pfad3=D:\Users\Thoma\OneDrive\Desktop\3


for /l %%G in (1 2 3) do (call Set BB=%%Pfad%%G%%)

echo Suche nach 1
set "Dateifilter=*1*;weiterer begriff"  
set "Quelle=%BB%"  
set "Ziel=C:\Users\Thoma\OneDrive\Desktop\4\"  
for /f "delims=" %%a in ('dir /s /b /a-d "%Quelle%\%Dateifilter%"') do @(  
 xcopy "%%a" "%Ziel%" /I /D /E /Y  

)

Content-ID: 4440743381

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

4400667902
Lösung 4400667902 29.10.2022 aktualisiert um 16:57:41 Uhr
Goto Top
@echo off & setlocal enabledelayedexpansion
set "Pfad1=A:\Users\Thoma\OneDrive\Desktop\1"  
set "Pfad2=B:\Users\Thoma\OneDrive\Desktop\2"  
set "Pfad3=C:\Users\Thoma\OneDrive\Desktop\3"  

set "Dateifilter=*begriff*"  
set "Ziel=C:\Users\Thoma\OneDrive\Desktop\4\"   

for /l %%a in (1 1 3) do (
	set "quelle=!Pfad%%a!"  
	echo Suche in !quelle! ...
	for /f "delims=" %%b in ('dir /s /b /a-d "!Quelle!\%Dateifilter%"') do xcopy "%%b" "%Ziel%" /I /D /E /Y   
)
micneu
micneu 29.10.2022 um 14:39:16 Uhr
Goto Top
@charmeurs; verzeih die Frage.
Wir haben 2022 warum macht man sowas noch mit BATCH und nicht mit Powershell (habe länger nicht an Windows gemacht)?
charmeur
charmeur 29.10.2022 um 15:17:04 Uhr
Goto Top
Danke für deine Unterstützung jedoch wird nichts gefunden.
In der Zwischenzeit habe ich ein wenig rum gespielt und habe folgenden Code
Dieser ist sicher nicht schön, aber er macht das was er soll


@echo off & setlocal enabledelayedexpansion
rem ########### Laufwerke
set Pfad1=C:\Users\Thoma\OneDrive\Desktop\1\1
set Pfad2=C:\Users\Thoma\OneDrive\Desktop\1\2
set Pfad3=C:\Users\Thoma\OneDrive\Desktop\1\3
set Pfad4=c:\Users\Thoma\OneDrive\Desktop\1\4
rem ########### Zielordner der Sicherung
set Ziel=C:\Users\Thoma\OneDrive\Desktop\1\4\
rem ########### Anzahl Laufwerke
set Anzahl_Laufwerke=4

rem ########### Massen Set
set /a loop=0

set /a "Dateifilter1=*19*"  
set /a "Dateifilter2=*1*"  
:install
set /a loop=%loop%+1
call set PP=%%Pfad%loop%%%
call set filter=%%Dateifilter%loop%%%
rem echo %ww%
rem echo %filter%
if %loop%==%Anzahl_Laufwerke% goto fehler

for /f "delims=" %%a in ('dir /s /b /a-d "%PP%\%filter%"') do @(  
xcopy "%%a" "%Ziel%" /I /D /E /Y  
goto install            )

:fehler
charmeur
charmeur 29.10.2022 aktualisiert um 15:25:41 Uhr
Goto Top
Zitat von @micneu:

@charmeurs; verzeih die Frage.
Wir haben 2022 warum macht man sowas noch mit BATCH und nicht mit Powershell (habe länger nicht an Windows gemacht)?

weil es geht

Interessehalber wie würde es bei Powershell aussehen?
4400667902
4400667902 29.10.2022 um 16:25:47 Uhr
Goto Top
Klappt hier fehlerfrei ...
4400667902
Lösung 4400667902 29.10.2022 aktualisiert um 16:41:45 Uhr
Goto Top
Powershell
$search = "*Dich such ich*","*oder was anderes*"  
$pathes = "C:\Users\Thoma\OneDrive\Desktop\1\1","C:\Users\Thoma\OneDrive\Desktop\1\2","C:\Users\Thoma\OneDrive\Desktop\1\3","C:\Users\Thoma\OneDrive\Desktop\1\4"  
$ziel = "D:\Ziel"  
Get-ChildItem -Path $pathes -File -Recurse -Force -Include $search | copy-item -Destination $ziel -verbose
charmeur
charmeur 09.11.2022 um 17:16:00 Uhr
Goto Top
Danke für dein Beispiel, leider wird bei mir kein Ordner namens Ziel angelegt, es wird nur eine "Datei" namens Ziel angelegt auf die ich keinen Zugriff habe.
4400667902
4400667902 09.11.2022 aktualisiert um 17:28:46 Uhr
Goto Top
Zitat von @charmeur:

Danke für dein Beispiel, leider wird bei mir kein Ordner namens Ziel angelegt, es wird nur eine "Datei" namens Ziel angelegt auf die ich keinen Zugriff habe.

Man könnten ja eigentlich auch selbst auf die Idee kommen den Ordner mal anzulegen
# ...
$ziel = "D:\Ziel"  
md $ziel -Force
# ...
Aber das kann man hier anscheinend nicht erwarten ....
charmeur
charmeur 09.11.2022 um 17:44:53 Uhr
Goto Top
ok Danke für die Hilfe,
und bei dem Script würden dann nur die neusten Dateien Kopiert?
Also es wird nach den
$search = "*Dich such ich*","*oder was anderes*"  
gesucht, und Kopiert
Kopiert er die Sachen jedes mal neu oder vergleicht er ob die Datei gleich (Änderungsdatum) ist und überspringt diese dann?
Hintergrund ist das unter umständen eine Grosse Datei dabei sein könnte die ich auf dem USB Kopieren möchte, falls es diese Datei schon gibt dann wäre es unnötig, und könnte Übersprungen werden
Serie: Suchen Kopieren auf definierten Laufwerken
Suchen Kopieren auf definierten Laufwerken9