sportiii
Goto Top

Batch: Datei in 2 Ordner suchen, falls die gleiche Datei in beiden Ordner, dann in Zielordner kopieren

Hallo meine Freunde..

Scheitere derzeit an leichten Sachen..

Folgendes:

Ich muss eine Batchdatei schreiben, in der ich 2 Ordner nach vielen Dateien untersuchen muss..

Das ganze schaut so aus:

Quelleordner:
Rechnung_26547
Storno_10523
Inhalt_75841

Verzeichnisordner:
Storno_10523

Zielordner:

Von mir wird verlangt, die Datei im Verzeichnisordner im Quelleordner zu suchen und wenn eine Übereinstimmung vorhanden ist, diese Datei in das Zielordner zu kopieren.

Gruß

Content-Key: 280416

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

Printed on: May 8, 2024 at 10:05 o'clock

Member: TlBERlUS
TlBERlUS Aug 17, 2015 at 06:50:58 (UTC)
Goto Top
Guten Morgen,

falls es Powershell sein darf:
 
$sourcepath = ".\Desktop\quelle"  
$path = ".\Desktop\test"  

$sarr = gci $sourcepath | select -ExpandProperty Name
$arr = gci $path | select -ExpandProperty Name

foreach($a in $arr){
if($sarr -contains $a){
Copy-Item $sourcepath\$a -Destination $path -Force
}}
Member: Sportiii
Sportiii Aug 17, 2015 at 07:32:47 (UTC)
Goto Top
Muss leider Batch sein! Aber trotzdem danke für die Powershellversion!
Mitglied: 114757
114757 Aug 17, 2015 updated at 08:56:47 (UTC)
Goto Top
Muss leider Batch sein!
So ein alter Käse face-wink
@echo off
set "quellordner=C:\quelle"  
set "verzeichnisordner=C:\verzeichnisordner"  
set "zielordner=C:\ziel"  
for %%b in ("%verzeichnisordner%\*.*") DO @(  
	for /f "tokens=* delims=" %%a in ('dir /b /s /a-d "%quellordner%" ^| findstr /i /e /c:"%%~nxb"') DO @(  
		copy "%%a" "%zielordner%"  
	)
)

btw. mit Powershell lässt sich das noch effektiver mit dem Compare-Object machen, anstatt jedes File in einer Schleife zu durchlaufen:
$quelle = "C:\quelle"  
$Verzeichnisordner = "C:\Verzeichnisordner"  
$ziel = "C:\ziel"  
$vFiles = gci $Verzeichnisordner -Recurse | ?{!$_.PSIsContainer}
$qfiles = gci $quelle -Recurse | ?{!$_.PSIsContainer}
compare $qFiles $vFiles -Property Name -IncludeEqual -ExcludeDifferent -PassThru | copy-item -destination $ziel
Gruß jodel32
Member: Sportiii
Sportiii Aug 17, 2015 at 10:52:13 (UTC)
Goto Top
Folgendes: Auftraggeber hat da was hinzugefügt!

Das ganze soll so aussehen:
- Wenn man Batch startet, soll per Hand in der Konsole eine Nummer eingegeben werden. Danach soll eine Suche gestartet werden, ob im Verzeichnis und in der Quelle die Nummer zu finden ist.
- FALLS JA, dann eine Kopie in das Ziel
- FALLS NEIN, eine Fehlermeldung
Mitglied: 114757
114757 Aug 17, 2015 updated at 10:55:30 (UTC)
Goto Top
Folgendes: Auftraggeber hat da was hinzugefügt!
Haahaha face-big-smile . Wohl mal wieder einen Auftrag angenommen und null Ahnung was ..., sind wir deine Hiwis ??
Member: Sportiii
Sportiii Aug 17, 2015 at 11:03:51 (UTC)
Goto Top
Also ich nicht face-smile bin nur der Praktikant hier. Kenn mich schon bisschen aus, aber mein Schwerpunkt liegt im Marketingbereich.
Wäre super, falls du mir helfen könntest!
Mitglied: 114757
Solution 114757 Aug 17, 2015, updated at Aug 18, 2015 at 06:13:47 (UTC)
Goto Top
@echo off
set /p nummer=Geben sie eine Nummer ein:
set "quellordner=C:\quelle"  
set "verzeichnisordner=C:\Verzeichnisordner"  
set "zielordner=C:\ziel"  
set found=
for /f "tokens=* delims=" %%b in ('dir /b /s /a-d "%verzeichnisordner%" ^| findstr /i /c:"%nummer%"') DO @(  
	for /f "tokens=* delims=" %%a in ('dir /b /s /a-d "%quellordner%" ^| findstr /i /c:"%nummer%"') DO @(  
		copy "%%a" "%zielordner%"  
		set found=1
	)
)
if not defined found echo Keine Datei gefunden!
Ja ja, immer diese futler ;-P
Member: TlBERlUS
TlBERlUS Aug 17, 2015 at 11:31:35 (UTC)
Goto Top
Zitat von @114757:

btw. mit Powershell lässt sich das noch effektiver mit dem Compare-Object machen, anstatt jedes File in einer Schleife zu
durchlaufen:

Inwiefern eig. effektiver (mal abgesehen von weniger Zeilen Skript?). Wenn ich die nachmesse (5 Dateien, 111 MB) komme ich bei beiden Skripten auf 358 Millisekunden.

P.S. was soll futler heißen?
Mitglied: 114757
114757 Aug 17, 2015 updated at 11:39:05 (UTC)
Goto Top
Zitat von @TlBERlUS:
Inwiefern eig. effektiver (mal abgesehen von weniger Zeilen Skript?). Wenn ich die nachmesse (5 Dateien, 111 MB) komme ich bei
beiden Skripten auf 358 Millisekunden.
Damit meine ich nur das nicht eine Schleife jede Datei einzeln überprüfen muss, sondern das compare-object das für einen erledigt. Ist Geschmackssache ...
P.S. was soll futler heißen?
Praktikant der sich hier seine Arbeit machen lässt face-smile