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-Key: 4440743381

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

Printed on: April 27, 2024 at 08:04 o'clock

Mitglied: 4400667902
Solution 4400667902 Oct 29, 2022 updated at 14:57:41 (UTC)
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   
)
Member: micneu
micneu Oct 29, 2022 at 12:39:16 (UTC)
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)?
Member: charmeur
charmeur Oct 29, 2022 at 13:17:04 (UTC)
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
Member: charmeur
charmeur Oct 29, 2022 updated at 13:25:41 (UTC)
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?
Mitglied: 4400667902
4400667902 Oct 29, 2022 at 14:25:47 (UTC)
Goto Top
Klappt hier fehlerfrei ...
Mitglied: 4400667902
Solution 4400667902 Oct 29, 2022 updated at 14:41:45 (UTC)
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
Member: charmeur
charmeur Nov 09, 2022 at 16:16:00 (UTC)
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.
Mitglied: 4400667902
4400667902 Nov 09, 2022 updated at 16:28:46 (UTC)
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 ....
Member: charmeur
charmeur Nov 09, 2022 at 16:44:53 (UTC)
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