Batch und Copy - Die Datei kann nicht in sich selbst kopiert werden
Ich beschäftige mich gerade etwas mit Batch und habe noch nicht soviel Erfahrung, bin aber bereit zu lernen.
Bei meiner Datei die ich derzeit anlegen will bekomm ich immer folgende Meldung:
Die Datei kann nicht in sich selbst kopiert werden.
0 Datei(en) kopiert.
Hallo liebe Community,
wie oben schon geschrieben, versuche ich mich gerade an Batch Dateien.
Leider habe ich ein "Problem", was eigentlich kein Problem ist sondern mir einfach optisch in dem Batchablauf nich gefällt und mich stört.
Hier mal den Code:
Nun bekomm ich im Verlauf der Batch Datei aber folgende Zeilen angezeigt:
Meine Suche im Internet hat ergeben, dass diese Zeile angezeigt wird, weil Quell- und Zieldatei identisch sind, was in dem Fall auch stimmt da ich den Dateinamen nicht ändern mag.
Wenn ich nun folgende Zeile:
zu
ändere, wird mir angezeigt, dass die Dateien kopiert werden, allerdings werden die Dateien nicht in dem Zielordner angezeigt.
Kann mir vielleicht jemand auf die Sprünge helfen?
Liebe Grüße,
Smorod
Bei meiner Datei die ich derzeit anlegen will bekomm ich immer folgende Meldung:
Die Datei kann nicht in sich selbst kopiert werden.
0 Datei(en) kopiert.
Hallo liebe Community,
wie oben schon geschrieben, versuche ich mich gerade an Batch Dateien.
Leider habe ich ein "Problem", was eigentlich kein Problem ist sondern mir einfach optisch in dem Batchablauf nich gefällt und mich stört.
Hier mal den Code:
@echo off
set quelle= %cd%
echo Welche Dateien sollen verschoben werden? (Bsp.: hdmgl_* verschiebt alle Dateien die mit hdmgl_ beginnen)
set /p dateien=
echo Ihre Eingabe lautet: %dateien%
pause
echo.
echo.
echo In welchen Ordner sollen die Dateien verschoben werden? (es können auch Unterordner angegeben werde. Bsp.: Dokumente\Privat )
set /p zielordner=
md "%zielordner%"
ping -n 3 localhost > nul
echo.
echo.
echo Die Dateien werden nun kopiert
for /R %%f in (%dateien%) do copy "%%f" "%cd%\%zielordner%" /Y
pause
echo.
echo.
echo Sollen die Quelldateien gelöscht werden?
del "%cd%\"%dateien%"" /P
Pause
Nun bekomm ich im Verlauf der Batch Datei aber folgende Zeilen angezeigt:
Die Datei kann nicht in sich selbst kopiert werden.
0 Datei(en) kopiert.
Meine Suche im Internet hat ergeben, dass diese Zeile angezeigt wird, weil Quell- und Zieldatei identisch sind, was in dem Fall auch stimmt da ich den Dateinamen nicht ändern mag.
Wenn ich nun folgende Zeile:
for /R %%f in (%dateien%) do copy "%%f" "%cd%\%zielordner%" /Y
for /R %%f in (%dateien%) do copy "%%f" "\%zielordner%" /Y
Kann mir vielleicht jemand auf die Sprünge helfen?
Liebe Grüße,
Smorod
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 177628
Url: https://administrator.de/contentid/177628
Ausgedruckt am: 16.11.2024 um 21:11 Uhr
16 Kommentare
Neuester Kommentar
moin,
nimm bitte das €echo off raus....
Zeile 12 - wenn der Ordner existiert oder wenn du Somderzeichen eiongibts - das wird nicht abgefangen.
Wenn quellordner und Ziel identisch sind dann?
Zeile 21 / 22 sind *hüstel*...
Gruß
nimm bitte das €echo off raus....
Zeile 12 - wenn der Ordner existiert oder wenn du Somderzeichen eiongibts - das wird nicht abgefangen.
Wenn quellordner und Ziel identisch sind dann?
Zeile 21 / 22 sind *hüstel*...
Gruß
Aloha,
... und zusätzlich noch:
sprich: " C:\Pfad\Verzeichnis" und
sprich: "C:\Pfad\Verzeichnis\"type*""
killt sich spätestens ab Windows 7 eh von selbst
PENG!
So und jetzt warte ich erst einmal die Abarbeitung der Frage vom Biberle und T-Mos Hinweisen ab
greetz André
... und zusätzlich noch:
set quelle= %cd%
del "%cd%\"%dateien%"" /P
killt sich spätestens ab Windows 7 eh von selbst
PENG!
So und jetzt warte ich erst einmal die Abarbeitung der Frage vom Biberle und T-Mos Hinweisen ab
greetz André
Tachien.
Kleiner Hinweis zum Thema
for /R %%f in (%dateien%) do copy "%%f" "%cd%\%zielordner%" /Y
Soweit ok, ABER:
Du sagst ihm er soll alle Dateien aus dem %cd%-Verzeichnis und alle darüber liegenden Dateien kopieren. *Klickerts?*
Nein?
Jetzt sagst du er soll in den Ordner TEST speichern, den er dann unter %cd%/Test anlegt. Und genau diese Dateien im Ordner TEST soll er auch nach %cd%\Test kopieren.
Legst du z.B. den Zielordner auf c:\temp\"DeineEingabe" und nicht auf %cd%\"DeineEingabe" löppts ohne Fehlermeldungen. ... aber vielleicht stören die Meldungen nicht (echo off), denn funktionieren tuts auch so.
greetz
ravers
Kleiner Hinweis zum Thema
for /R %%f in (%dateien%) do copy "%%f" "%cd%\%zielordner%" /Y
Soweit ok, ABER:
Du sagst ihm er soll alle Dateien aus dem %cd%-Verzeichnis und alle darüber liegenden Dateien kopieren. *Klickerts?*
Nein?
Jetzt sagst du er soll in den Ordner TEST speichern, den er dann unter %cd%/Test anlegt. Und genau diese Dateien im Ordner TEST soll er auch nach %cd%\Test kopieren.
Legst du z.B. den Zielordner auf c:\temp\"DeineEingabe" und nicht auf %cd%\"DeineEingabe" löppts ohne Fehlermeldungen. ... aber vielleicht stören die Meldungen nicht (echo off), denn funktionieren tuts auch so.
greetz
ravers
... und auch noch etwas Senf von mir:
Es gibt Situationen, in denen "
Und außerdem: Ein "
Schließlich: Es muss nicht "
Grüße
bastla
Es gibt Situationen, in denen "
%cd%
" sinnvoll verwendet werden kann - das hier ist keine.Und außerdem: Ein "
copy
" in einem Batch braucht kein "/Y" - das überschreibt auch so.Schließlich: Es muss nicht "
for /R
" sein - ein "for /F "delims="
" zusammen mit einem "dir /s /b /a-d
" hat auch seinen Charme (es ging ja eigentlich mal um "Die Datei kann nicht in sich selbst kopiert werden") ...Grüße
bastla
Moin Smorod,
Können/sollen wir noch beim Sortieren helfen?
Grüße
Biber
Zitat von @smorod:
.... Ich werde meine Batchdatei mal anpassen und mich ncohmal melden wenn ich soweit bin ;)
Gibt es schon erste vorsichtige Schätzungen, wann das sein wird?.... Ich werde meine Batchdatei mal anpassen und mich ncohmal melden wenn ich soweit bin ;)
Können/sollen wir noch beim Sortieren helfen?
Grüße
Biber
Hallo smorod!
Am Tipp von bastla lässt sich auch "
... oder Du verzichtest in Deinem derzeitigen Ansatz einfach auf "
Noch einer zum Thema "verzichten": Anstelle von
sollte es auch
tun ...
Grüße
bastla
Am Tipp von bastla lässt sich auch "
dir /s /b /a-d
" auf "dir /b /a-d
" ändern ... ... oder Du verzichtest in Deinem derzeitigen Ansatz einfach auf "
/R
".Noch einer zum Thema "verzichten": Anstelle von
if exist "..\%zielordner%" GOTO ping
md "..\%zielordner%"
echo Zielverzeichnis wurde angelegt!
md "..\%zielordner%" 2>nul && echo Zielverzeichnis wurde angelegt!
Grüße
bastla
Hallo smorod!
Grüße
bastla
Deine Zeile macht eigentlich das Gleiche wie die
Jein; es wird einfach ohne Existenzprüfung (die erfolgt ja ohnehin implizit) versucht, den Zielordner zu erstellen (und dür den Fall, dass es den schon gibt, die Fehlermeldung per "if exist
Zeile, nur dass bei dir das errorlevel
überprüft wird. Lieg ich da richtig?2>nul
" ins Nirwana befördert) - wenn der Ordner tatsächlich erstellt wurde, kann auf Basis des Errorlevels (hast Du richtig interpretiert ) noch die gewünschte Meldung ausgegeben werden ...Grüße
bastla
Moin smorod,
noch eine Fussnote zu bastlas Antwort.
Mir liegt eher die "IF NOT EXIST "..\bla\%zielordner%" md "..\bla\%zielordner%" .-Variante
Ist für mich "lesbarer" oder der "nachvollziehbarere Code" ( WENN noch nix existiert DANN anlegen [SONST halt nüscht])
-> Kann ich besser lesen, weil die Einzel-Schritte meinem erwarteten Vorgehensmuster entsprechen.
Andererseits muss ich zugeben:
das "md ""..\bla\%zielordner%" auf jeden Fall und wenn es Fehler gibt, dann ignorieren" ....
----> geht bei ein paar 10000 Ordnern etwas schneller als das "erst prüfen und ggf. anlegen"
Wobei "schneller" natürlich bei den heutigen Kampfstern-Galactica-Rechnern nur noch knapp überhaupt messbar ist.
Du kannst in der eingesparten Zeit jetzt keine größeren Puzzles fertigstellen oder Apfelmännchen schnitzen oder so.....
Grüße
Biber
noch eine Fussnote zu bastlas Antwort.
Mir liegt eher die "IF NOT EXIST "..\bla\%zielordner%" md "..\bla\%zielordner%" .-Variante
Ist für mich "lesbarer" oder der "nachvollziehbarere Code" ( WENN noch nix existiert DANN anlegen [SONST halt nüscht])
-> Kann ich besser lesen, weil die Einzel-Schritte meinem erwarteten Vorgehensmuster entsprechen.
Andererseits muss ich zugeben:
das "md ""..\bla\%zielordner%" auf jeden Fall und wenn es Fehler gibt, dann ignorieren" ....
----> geht bei ein paar 10000 Ordnern etwas schneller als das "erst prüfen und ggf. anlegen"
Wobei "schneller" natürlich bei den heutigen Kampfstern-Galactica-Rechnern nur noch knapp überhaupt messbar ist.
Du kannst in der eingesparten Zeit jetzt keine größeren Puzzles fertigstellen oder Apfelmännchen schnitzen oder so.....
Grüße
Biber
Zitat von @smorod:
Jetzt werde ichmich dann noch mit dem Abfangen von Sonderzeichen beschäftigen, aber das wird eine neue Geschichte .
Umlaute (Jetzt werde ichmich dann noch mit dem Abfangen von Sonderzeichen beschäftigen, aber das wird eine neue Geschichte .
chcp 1252
) oder Sonderzeichen (setlocal enabledelayedexpansion
oder VBS)? beachte das dann bitte im nächsten Thread oder bei deiner Forensuche
greetz André