# Dateien suchen und kopieren



## giuppy (22. Oktober 2013)

Hallo zusammen

ich möchte einige pdf dateien suchen, die auf ein server sind , kopieren auf mein Festplatte speichern

die Dateien haben verschienen Namen z.B. (13016026_UE_RECHNUNG_53825           3381.pdf) auch mit leerzeichnen
ich möchte anhand eine liste (liste.txt) verschiedenen Dateien suchen z.B.
13016026
13016028
13016050
usw
gesucht sollen nur die ersten 8 stelle

kopieren und in mein Festplatte speichern (c:\pdf)
dann mit pdf24 nur eine pdf Datei erstellen

kann mir jemand helfen

danke


----------



## deepthroat (23. Oktober 2013)

Hi.

Was für ein Server? HTTP?

Welches Betriebssystem?

Wobei helfen? Also, was kannst du denn schon? Welche Programmiersprache?


----------



## HonniCilest (23. Oktober 2013)

Hier mal ein vereinfachtes Beispiel mit Powershell:

```
$liste = Get-Content C:\temp\liste.txt
ForEach ($listeneintrag In $liste) { 
    Copy-Item C:\temp\Server\"$listeneintrag"*.txt C:\temp
}
```


----------



## giuppy (23. Oktober 2013)

@ deepthroat
danke
Was für ein Server? HTTP?  ich glaube HTTP 
Welches Betriebssystem? Windows XP

Wobei helfen? Also, was kannst du denn schon? Welche Programmiersprache 
ich habe an Batch gedacht
ich habe folgende batch (funktioniert leider nicht)

```
@echo off 
for /f "delims=" %%i in (C:\Dateien.txt) do call :ProcessFile "%%i.pdf"
goto :eof

:ProcessFile
for /f "delims=" %%d in ('findstr /i "~0,8%" \\caopti06.zucchi.it\fatture\Germania\Bassetti\') do xcopy %f c:\pdf

goto :eof
```

PS  mit

```
echo off
xcopy "\\caopti06.zucchi.it\fatture\Germania\Bassetti\11009039*" "C:\pdf"
```
funktioniert 
ich möchte aber Dateinamen aus einem txt File lesen in Server (\\caopti....)suchen und diese in einen gewünschten Ordner kopieren
z.B. Dateien.txt (in C gespeichert)
13016026
13016028
13016050
usw
Diese Dateien in Server suchen (nur 8 Stellen) die Dateinamen auf den Server sind immer anders 
z.B. 13016026_UE_RECHNUNG_53825 3381.pdf und immer in pdf
dann alle gefundene Datein in meine Festplatte (c:/pdf) kopieren


----------



## HonniCilest (23. Oktober 2013)

Warum so umständlich? Verwende * als Platzhalter.

```
@echo off
for /f "delims=" %%i in (C:\Dateien.txt) do xcopy file:\\caopti06.zucchi.it\fatture\Germania\Bassetti\%%i*.pdf C:\pdf
```


----------



## giuppy (23. Oktober 2013)

funktioniert leider nicht 
dateien.txt sieht so aus
13016025
13016026
13016031
und aud den server die Dateiname sind etwa änders
z.B.
13016025_UE_RECHNUNG_53651           3191
es sollen nur die erste 8 stellen vergleichen und dann kopieren


----------



## HonniCilest (23. Oktober 2013)

giuppy hat gesagt.:


> funktioniert leider nicht
> dateien.txt sieht so aus
> 13016025
> 13016026
> ...



Deswegen auch der *. Der * steht für beliebig viele Zeichen zwischen %%i und .pdf


----------



## giuppy (23. Oktober 2013)

ich habe deine batch kopiert
@echo off
for /f "delims=" %%i in (C:\Dateien.txt) do xcopy file:\\caopti06.zucchi.it\fatture\Germania\Bassetti\%%i*.pdf C:\pdf 
funktioniert nicht (auch mit der *)
die pdf Rechnungen  130116025-26-31 werden NICHT auf c:\pdf kopiert


----------



## deepthroat (23. Oktober 2013)

Haben die Dateien denn auch tatsächlich eine .pdf Endung?

Was ist die Ausgabe des xcopy Befehls?

Zum Debuggen, schalte das "echo" auf on. Zeige die konkrete Ausgabe.


----------



## HonniCilest (24. Oktober 2013)

Vielleicht passt das file: an dieser Stelle auch nicht, hatte es nicht getestet. Lass' es einfach mal weg.

Wenn es dann aber immernoch nicht funktioniert:
Hast du alle notwendigen Rechte zum Schreiben lokal?
Benötigst du weitere Kennungen für den Zugriff auf den Fileshare?

Im übrigen unterscheidet sich 130116025-26-31 um eine Stelle von dem Inhalt deiner Dateien.txt, ich vermute mal, dass du hier einfach nur eine 1 zu viel getippt hast?!


----------



## giuppy (24. Oktober 2013)

deepthroat hat gesagt.:


> Haben die Dateien denn auch tatsächlich eine .pdf Endung?
> Was ist die Ausgabe des xcopy Befehls?
> Zum Debuggen, schalte das "echo" auf on. Zeige die konkrete Ausgabe.



Danke
Problem gelöst ich habe die " " vergessen
@echo off
for /f "delims=" %%i in (C:\Dateien.txt) do xcopy "\\caopti06.zucchi.it\fatture\Germania\Bassetti\%%i*.pdf" "C:\pdf "

Kann mann ein text protokoll schreiben in dem  die nicht gefundenen  datei aufgelistet werden
ps die suche dauert relativ lang


----------



## HonniCilest (25. Oktober 2013)

> Kann mann ein text protokoll schreiben in dem die nicht gefundenen datei aufgelistet werden



Du könntest versuchen mit dem Errorlevel zu arbeiten, laut Dokumentation von xcopy:

Exit code: Description 
0: Files were copied without error.
1: No files were found to copy.



> ps die suche dauert relativ lang


Kommt darauf an wie groß Dateien.txt ist und wie deine Zugriffsgeschwindigkeit auf deinen Fileshare ist.


----------



## giuppy (25. Oktober 2013)

danke
werde ich später ausprobieren
noch eine Frage
auf mein Server caopti06..... gibt es mehrere Unterverzeichnisse
Bassetti
Zucchi
usw
mit diesem Batch wird gesucht nur in Bassetti
 @echo off
for /f "delims=" %%i in (C:\Dateien.txt) do xcopy "\\caopti06.zucchi.it\fatture\Germania\Bassetti\%%i*.pdf" "C:\pdf "
wenn ich die "\\caopti06.zucchi.it\fatture\Germania\" schreibe funktioniert nicht
ich habe auch for/d "delims="..... probiert aber geht auch nicht
mit variable xcopx........../s sollte funktionieren aber dauert viel zu lange und wird auch den Unterordner z.B Bassetti kopiert ich möchte alle Dateien haben ohne unterordner
mit
@@echo off && title %~n0 && color 70

for /f "delims=" %%i in (C:\Rechnungen\BR\BRDateien.txt) do xcopy "\\caopti06.zucchi.it\fatture\Germania\Bassetti\%%i*.pdf" "C:\Rechnungen\BR\" 

for /f "delims=" %%i in (C:\Rechnungen\BR\BRDateien.txt) do xcopy "\\caopti06.zucchi.it\fatture\Germania\Zucchi\%%i*.pdf" "C:\Rechnungen\BR\" 

for /f "delims=" %%i in (C:\Rechnungen\BR\BRDateien.txt) do xcopy "\\caopti06.zucchi.it\fatture\Germania\LauraAshley\%%i*.pdf" "C:\Rechnungen\BR\

funktioniert
gibt eine bessere losung ?
danke


----------



## HonniCilest (28. Oktober 2013)

Du musst dem xcopy sagen, dass auch Unterverzeichnisse durchsucht werden sollen. Dafür gibt es m.E. einen Schalter. Bitte hierfür in die Dokumentation schauen.


----------



## giuppy (28. Oktober 2013)

HonniCilest hat gesagt.:


> Du musst dem xcopy sagen, dass auch Unterverzeichnisse durchsucht werden sollen. Dafür gibt es m.E. einen Schalter. Bitte hierfür in die Dokumentation schauen.



Danke
Ich habe keine  schalter gefunden
Es sollte unterverzeichnisse suchen
Die unterverzeichnisse sollen aber nicht kopiert werden nur die dateien


----------



## HonniCilest (30. Oktober 2013)

Hmmm, ok.
Dann gibt es aber noch die Möglichkeit von 2 Schleifen, d.h.:
- Äußere Schleife über %%i: Zeilen der Datei wie gehabt
- Innere Schleife über %%j: Zeilen der Ausgabe von dir /a:d/b/s %Hauptpfad% (ist in einfache Hochkomma innerhalb der Klammer zu setzen)

--> xcopy "%%j/%%i*.pdf" "C:\pdf"


----------



## giuppy (30. Oktober 2013)

mmmmmmmmmmmhhhh

@@echo off && title %~n0 && color 70

for /f "delims=" %%i in (C:\Rechnungen\MZE\MZEDateien.txt) do xcopy "\\caopti06.zucchi.it\fatture\Germania\%%j/%%i*.pdf" "C:\Rechnungen\MZE\"
funktioniert aber nicht
gesucht sollte in "\\caopti06.zucchi.it\fatture\Germania ( mit verschiedenen Unterverzeichnisse)
Ausgabe in C:\Rechnungen........ ohne unterverzeichnisse


----------



## HonniCilest (31. Oktober 2013)

giuppy hat gesagt.:


> mmmmmmmmmmmhhhh
> 
> @@echo off && title %~n0 && color 70
> 
> ...



Du musst %%j ja auch in einer inneren Schleife setzen!
Also:

```
for blablabla %%i blabla do (
 for blablabla %%j blablabla do
  xcopy blablabla
)
```

Ich denke für %%j müsste die Zeile etwa so aussehen:

```
for /f "delims=" %%j in ('dir /a:d/b/s \\caopti06.zucchi.it\fatture\Germania') do
```

/a:d/b/s
Steht dabei für alle Verzeichnisse inkl. Unterverzeichnisse einfache Auflistung (also keine weiteren Metadaten)

Edit:
Frei zusammenkopiert würde ich etwa so meinen:

```
@echo off

for /f "delims=" %%i in (C:\Rechnungen\MZE\MZEDateien.txt) do (
  for /f "delims=" %%j in ('dir /a:d/b/s \\caopti06.zucchi.it\fatture\Germania') do 
    xcopy "%%j/%%i*.pdf" "C:\Rechnungen\MZE\"
)
```


----------

