selord
Goto Top

Batch - Einzelne Dateien kopieren

Hallo,

ich habe folgendes Problem:

Ich kopiere Dateien aus einem Ordner in einen anderen - dabei nehme ich jede Datei einzeln - das soll so sein!
In meinem Script habe ich folgenden Code:

set pfadinternneu=C:\%date%
set pfadextern=\\test

for %%i in (%pfadinternneu%\*.JPG) do copy %%i %pfadextern%

Dieser Code kopiert mir auch erfolgreich jede Datei, sofern die Variable %pfadinternneu% nicht selber die Variable %date% beinhaltet.

Was muss ich hier in der For-Bedingung Anpassen, damit der Pfad richtig angenommen wird?

Lg
Patrick

Content-Key: 136578

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

Printed on: April 24, 2024 at 02:04 o'clock

Member: tmystr
tmystr Feb 22, 2010 at 15:46:53 (UTC)
Goto Top
Hi,

habe zwar nicht viel Ahnung davon, aber vieleicht ist hier was dabei face-wink

http://www.google.de/#hl=de&source=hp&q=Batch+-+Einzelne+Dateie ...

lg
tmystr
Member: selord
selord Feb 22, 2010 at 15:49:12 (UTC)
Goto Top
Ist ja net so wie wenn ich net eh schon gesucht hätte danach ;)

Das Problem liegt ja wiegsagt nicht am Kopieren, sondern eher an der Pfadangabe mit Variablen in der For-Schleife.

Lg
Patrick
Member: Snowman25
Snowman25 Feb 22, 2010 at 15:55:58 (UTC)
Goto Top
Versuche mal, den Pfad davor als Laufwerk mounten
set pfadinternneu=C:\%date%
set pfadextern=\\test
net use X: %pfadextern%\%date%

for %%i in (%pfadinternneu%) do copy %%i X:\

Gruß
Snow
Member: Biber
Biber Feb 22, 2010 at 16:04:45 (UTC)
Goto Top
Moin selord,

willkommen im Forum.

wer oder was könnte dich ernsthaft darin hindern diese beiden Befehle nacheinander in einem CMD-Fenster abzufeuern:
set pfadinternneu=C:\%date%
set pfadextern=\\test

...und danach diesen abgewandelten dritten (um ein @echo ergänzt und zwei Prozentzeichen reduziert) hinterherzuschicken
for %i in (%pfadinternneu%) do @ECHO copy %i %pfadextern%
??

Dann siehst du doch, wo zu viele Leerzeichen oder zu wenige Anführungszeichen stehen....

Woher sollen wir wissen, in welcher Form bei dir "%date%" ausgegeben wird?
Das weiss nicht mal Bill G. höchstselbst vor dem Einschalten des Rechners...

Grüße
Biber
Member: selord
selord Feb 22, 2010 at 16:39:03 (UTC)
Goto Top
Ich habe im Code oben etwas vergessen:

for %%i in (%pfadinternneu%\*.JPG) do copy %%i %pfadextern%

Geneau hier liegt mein Problem!
Sofern ich die Befehle in der CMD einklopfe, wird der %pfadinternneu% nicht auf C:\Datum\*.JPG sondern nur auf C:\Datum ergänzt!
Der copy Befehl wird damit nicht richtig ausgeführt!

Ich bin kein Batch-Spezialist - evenutell stimmt ja nur die Syntax nicht. Deshalb eigentlich die Frage!

Btw: wie die Variable heißt, ob %date%, %x%, oder sonst was, macht bei mir keinen unterschied - bei der Verarbeitung des Pfades mit einer Variablen in meiner For-Schleife hab ich das Problem!

Lg
Patrick
Member: bastla
bastla Feb 22, 2010 at 16:58:27 (UTC)
Goto Top
Hallo selord und auch von mir ein Willkommen!

So richtig nachvollziehen kann ich ja nicht, wo's klemmt, aber es spricht (nicht nur in diesem Fall) eigentlich kaum etwas gegen die Verwendung einiger Anführungszeichen (aber möglichst paarweise face-wink) - daher: Wie geht es mit
for %%i in ("%pfadinternneu%\*.JPG") do copy "%%i" %pfadextern%
aus?

Grüße
bastla

P.S.: Wenn Du (hoffentlich) auch Deine Batch-Zeilen besser lesbar posten möchtest: ...
Member: selord
selord Feb 22, 2010 at 17:27:18 (UTC)
Goto Top
Das Problem ist auch nicht mit Anführungszeichen weg zu bringen!

Vielleicht nochmal zur Erklärung:

Ich setzte den Pfad:

set ordner=%date%
set pfadinternneu=C:\%ordner%


Dann wird die FOR-Schleife bzw. der copy-Befehl
for %%i in ("%pfadinternneu%\*.JPG") do copy "%%i" %pfadextern%  
nicht ausgeführt!
Der Pfad (pfadinternneu) wird anscheinend nicht korrekt zusammen gesetzt!
In der CMD erhalte ich hier als Output eben nur die Antwort C:\ordnername anstatt C:\ordnername\*.JPG.

Setze ich allerdings den Pfad so:

set pfadinternneu=C:\20100222

also ohne Variable %ordner% sondern eben Hard-Coded, hauts natürlich hin!

Lg
Patrick
Member: bastla
bastla Feb 22, 2010 at 17:58:24 (UTC)
Goto Top
Hallo selord!

Soferne Du der Variablen %date% nicht vorweg den Inhalt "20100222" zugewiesen hast, wird (auch bei Deinem bisher ungenannten Betriebssystem) mit an Sicherheit grenzender Wahrscheinlichkeit ein
<code type="plain>echo %date%
nicht "20100222", sondern etwa "22.02.2010" liefern und daher auch in %pfadinternneu% kein Pfad "C:\20100222" enthalten sein ...

... also was steht denn nun (nach der Eingabe von
set ordner=%date% 
set pfadinternneu=C:\%ordner%
an der Kommandozeile) wirklich in %pfadinternneu%, und welches Ergebnis bringt ein
dir "%pfadinternneu%"
(ebenfalls direkt an der Kommandozeile eingegeben)?

Grüße
bastla
Member: Pjordorf
Pjordorf Feb 22, 2010 at 18:08:03 (UTC)
Goto Top
Hallo Patrick,

> set ordner=%date%
> set pfadinternneu=C:\%ordner%
> 

Setze ich allerdings den Pfad so:
set pfadinternneu=C:\20100222
also ohne Variable %ordner% sondern eben Hard-Coded, hauts natürlich hin!
Poste doch mal deine im CMD Fenster Ausgabe von set pf und die Ausgabe von Date /t. Welches OS verwendest du? Bei Vista kommt folgendes raus:
D:\testing>set ordner=%date%
D:\testing>set ord
ordner=22.02.2010

D:\testing>set pfadinternneu=C:\%ordner%
D:\testing>set pf
pfadinternneu=C:\22.02.2010

D:\testing>set pfadinternneu=C:\20100222
D:\testing>set pf
pfadinternneu=C:\20100222

Peter

[Edit]
Viiiiieeeeeeelllllll zu langsam face-smile
[Edit]
Member: selord
selord Feb 23, 2010 at 13:42:51 (UTC)
Goto Top
Ich habe Win 7 als OS!

Habe das Problem jetzt anders gelöst!

Habe dem Ordner nun statt dem aktuellen Datum einfach einen temporären Namen gegeben:

> set pfadinternneu=C:\Temp

Ist für meine Zweck ausreichend, wenn auch nicht wünschenswert, aber der Aufwand wurde mir jetzt schon zu hoch!
Trotzdem Danke für die Mühe