Supportnet / Forum / Skripte(PHP,ASP,Perl...)
datei kopieren - egal von wo aus...
Frage
hallo,
ich brauche ein batch, das mir eine datei von einem beliebigen ort aus, zb. usb stick, desktop....immer in das gleiche verzeichnis kopiert...
beispiel für normal:
COPY [Pfad]\Datei.ext [Pfad]\[Datei.ext]
Beispiel: COPY c:\test\datei.exe a:\datei.exe
ich brauche es so:
COPY Datei.ext [Pfad]\[Datei.ext]
Beispiel: COPY datei.exe a:\datei.exe
wie kann man das anstellen?
Antwort 1 von son_quatsch
COPY funktioniert auch, wenn du als zweiten Parameter nur das Verzeichnis angibst ohne Dateinamen:
Ist es das, was du gesucht hast?
COPY datei.exe c:\testIst es das, was du gesucht hast?
Antwort 2 von ralfb
mach ne Batch mit Parameterübergabe
Bsp. CopyX.bat
ich würde xcopy benutzen, dann kannst Du auch Ordner kopieren
-----------
@echo off
xcopy %1 [Zielpfad]
-------
einfach im Windowsordner ablegen
über Konsole in den Quellordner wechseln
> eingeben "copyx [Dateiname]"
interessant wäre auch Zielordner als Verknüpfung in
X:\Dokumente und Einstellungen\user\SendTo
> rechter Mausklick auf zu kopierendes Objekt ...senden an
da kommt nur leider keine Erledigungsmeldung
mfg Ralf
Bsp. CopyX.bat
ich würde xcopy benutzen, dann kannst Du auch Ordner kopieren
-----------
@echo off
xcopy %1 [Zielpfad]
-------
einfach im Windowsordner ablegen
über Konsole in den Quellordner wechseln
> eingeben "copyx [Dateiname]"
interessant wäre auch Zielordner als Verknüpfung in
X:\Dokumente und Einstellungen\user\SendTo
> rechter Mausklick auf zu kopierendes Objekt ...senden an
da kommt nur leider keine Erledigungsmeldung
mfg Ralf
Antwort 3 von Teerbaby
oder eben
copy %1 c:\xyzAntwort 4 von Teerbaby
Ralf war schneller ;)
Antwort 5 von renell
nein...genau andersrum brauche ich es....
script und datei liegen immer zusammen in einem ordner....und müssen von usb-stick, oder hdd kopiert werden können
script und datei liegen immer zusammen in einem ordner....und müssen von usb-stick, oder hdd kopiert werden können
Antwort 6 von Teerbaby
Zitat:
nein...genau andersrum brauche ich es....
script und datei liegen immer zusammen in einem ordner....und müssen von usb-stick, oder hdd kopiert werden können
nein...genau andersrum brauche ich es....
script und datei liegen immer zusammen in einem ordner....und müssen von usb-stick, oder hdd kopiert werden können
Kannst du mal Beispiele nennen? Ist mir jetzt nicht wirklich klar, was du genau willst.
Antwort 7 von Arno_Nym
Dann ist doch dein erster Versuch eigentlich schon richtig.
Um sicherzugehen, kann man ja noch das Verzeichnis des aufrufenden Batchscriptes angeben. Dies macht die Variable %~dp0
Hinweis: %~dp0 enthält schon den abschließenden Backslash.
Arno
Um sicherzugehen, kann man ja noch das Verzeichnis des aufrufenden Batchscriptes angeben. Dies macht die Variable %~dp0
COPY "%~dp0datei.exe" a:\datei.exeHinweis: %~dp0 enthält schon den abschließenden Backslash.
Arno
Antwort 8 von son_quatsch
Dann hast du die Antwort schon in deiner Frage selbst gegeben:
Wenn das Skript immer an derselben Stelle wie die zu kopierende Datei ist - dann einfach Doppelklick und datei.exe (egal von wo) wird immer nach a:\ kopiert...
Zitat:
COPY Datei.ext [Pfad]\[Datei.ext]
Beispiel: COPY datei.exe a:\datei.exe
COPY Datei.ext [Pfad]\[Datei.ext]
Beispiel: COPY datei.exe a:\datei.exe
Wenn das Skript immer an derselben Stelle wie die zu kopierende Datei ist - dann einfach Doppelklick und datei.exe (egal von wo) wird immer nach a:\ kopiert...
Antwort 9 von ralfb
...ich verstehe nicht wo das Problem sein könnte
Wenn ich mich nicht irre funktionieren meine Tips aus AW2 von überall aus ..wenn die Batch im Windowsordner liegt wird sie immer gefunden und "senden an" macht auch kein Problem.
Falls Du dieses Sript/Batch an verschiedenen Rechner ausführen willst kannst du die Batchdatei auch vom Stick aus ausführen.
Ralf
Wenn ich mich nicht irre funktionieren meine Tips aus AW2 von überall aus ..wenn die Batch im Windowsordner liegt wird sie immer gefunden und "senden an" macht auch kein Problem.
Falls Du dieses Sript/Batch an verschiedenen Rechner ausführen willst kannst du die Batchdatei auch vom Stick aus ausführen.
Ralf
Antwort 10 von renell
mit %~dp0 davor geht es nicht....
dann kommt ne meldung:
ich muss z.b. immer eine aktuelle datei ins windows verzeichnis kopieren.
der zielpfad ist immer der selbe...das ist nicht das problem.
das problem ist der quellpfad...denn der ändert sich beim benutzen des scripts auf anderen rechnern...
z.b. hat ein usb stick nicht auf jedem rechner den gleichen laufwerksbuchstaben.
und wenn ich meine datei erst vom usb stick auf den desktop kopiere muss das script auch immer funktionieren.
also - egal wo die quell-datei sich befindet, das script muss immer funktionieren, ohne es noch anpassen zu müssen an den quellpfad...
oje....ich hoffe ihr versteht mich...
dann kommt ne meldung:
Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) kopiert.ich muss z.b. immer eine aktuelle datei ins windows verzeichnis kopieren.
der zielpfad ist immer der selbe...das ist nicht das problem.
das problem ist der quellpfad...denn der ändert sich beim benutzen des scripts auf anderen rechnern...
z.b. hat ein usb stick nicht auf jedem rechner den gleichen laufwerksbuchstaben.
und wenn ich meine datei erst vom usb stick auf den desktop kopiere muss das script auch immer funktionieren.
also - egal wo die quell-datei sich befindet, das script muss immer funktionieren, ohne es noch anpassen zu müssen an den quellpfad...
oje....ich hoffe ihr versteht mich...
Antwort 11 von Jaja
ja dann speichee deine batch doch mit auf dem usb stick und nicht im win verzeichnis und nutze den code
COPY Datei.ext [Pfad]\[Datei.ext]
evtl. dann auch mit xcopy.
COPY Datei.ext [Pfad]\[Datei.ext]
evtl. dann auch mit xcopy.
Antwort 12 von Arno_Nym
Äh, welches Betriebssystem?
%~dp0 geht nur bei NT-Systemen (NT, Win2000, XP, ...).
Arno
%~dp0 geht nur bei NT-Systemen (NT, Win2000, XP, ...).
Arno
Antwort 13 von Teerbaby
wenn die Batch nicht im gleichen Verzeichnis wie die Quelldatei liegt und du auch keine Parameter übergeben willst, hast du ein Problem.
Dann müsste die Datei ja erstmal gesucht werden.
Dann müsste die Datei ja erstmal gesucht werden.
Antwort 14 von Arno_Nym
Tipp zum Testen/Fehlersuche:
Dann kann man sich den Befehl, der ausgeführt würde, in Ruhe ansehen und evtl. Fehler besser entdecken.
Arno
echo COPY "%~dp0datei.exe" a:\datei.exe
pauseDann kann man sich den Befehl, der ausgeführt würde, in Ruhe ansehen und evtl. Fehler besser entdecken.
Arno
Antwort 15 von renell
ich habe jetzt die datei und die batch auf dem desktop....er findet aber die datei nicht...ohne pfadangabe....
so soll es sein:
wenn ich es so eingebe geht es...
aber das soll ja nicht nur vom desktop starten, sondern aus jedem beliebigen quellpfad...
so soll es sein:
xcopy "meldung.txt" "C:\WINDOWS\system32\" /s /d /ywenn ich es so eingebe geht es...
xcopy "C:\Dokumente und Einstellungen\renell\Desktop\meldung.txt" "C:\WINDOWS\system32\" /s /d /yaber das soll ja nicht nur vom desktop starten, sondern aus jedem beliebigen quellpfad...
Antwort 16 von Jaja
schau mal hier. diese variablen kannst du in deiner batch benutzen, ich denke %CD% wirds bringen, also:
xcopy %CD%"meldung.txt" "C:\WINDOWS\system32\" /s /d /y
xcopy %CD%"meldung.txt" "C:\WINDOWS\system32\" /s /d /y
Antwort 17 von son_quatsch
Erstelle folgende Datei und speichere sie als TEST.CMD ab:
Zitat:
cd
dir /b meldung.txt
xcopy "meldung.txt" "C:\WINDOWS\system32\" /s /d /y
Jetzt doppelklicken und anschließend sagen, was sie ausgibt.cd
dir /b meldung.txt
xcopy "meldung.txt" "C:\WINDOWS\system32\" /s /d /y
Antwort 18 von Arno_Nym
@son_quatsch
Da wird er wohl nicht viel erkennen... 'ne Pause wäre angebracht ;o)
@renell
Oder mein Vorschlag für den Inhalt der Test-Batch:
Was gibt er aus?
Arno
Da wird er wohl nicht viel erkennen... 'ne Pause wäre angebracht ;o)
@renell
Oder mein Vorschlag für den Inhalt der Test-Batch:
@echo off
echo xcopy "%~dp0meldung.txt" "C:\WINDOWS\system32\" /s /d /y
echo. & pauseWas gibt er aus?
Arno
Antwort 19 von renell
@ antwort 16
ergebnis bei:
Unzulässige Parameteranzahl
-------------------------------------------------------
@ antwort 17
ergebnis bei:
xcopy %CD%\meldung.txt" "C:\WINDOWS\system32\drivers\etc\ /s /d /yUnzulässige Parameteranzahl
-------------------------------------------------------
@ antwort 17
C:\Dokumente und Einstellungen\renell\Desktop>cd
C:\Dokumente und Einstellungen\landgraf\Desktop
C:\Dokumente und Einstellungen\renell\Desktop>dir /b meldung.txt
meldung.txt
C:\Dokumente und Einstellungen\renell\Desktop>xcopy "meldung.txt" "C:\WINDOWS\system32\" /s /d /yAntwort 20 von renell
@ antwort 19
das funktioniert...
es muss aber auch mit dateien funktionieren, die keine endung haben wie z.b. die hosts datei....
das funktioniert...
es muss aber auch mit dateien funktionieren, die keine endung haben wie z.b. die hosts datei....
Antwort 21 von Jaja
Zitat:
xcopy %CD%\meldung.txt" "C:\WINDOWS\system32\drivers\etc\ /s /d /y
Unzulässige Parameteranzahl
xcopy %CD%\meldung.txt" "C:\WINDOWS\system32\drivers\etc\ /s /d /y
Unzulässige Parameteranzahl
ich hab keine ahnung von windows batch, deshalb spiel mal mit den ".
lasse sie ganz weg oder schreibe es so:
xcopy "%CD%\meldung.txt" "C:\WINDOWS\system32\drivers\etc\" /s /d /y
Antwort 22 von ralfb
aus Link AW 16
Was soll das denn überhaupt bringen?? Wenn das Script vom Desktop ausgeführt wird, kann der Copy-Befehl wohl kaum so die Datei aufm Stick finden... da das aktuelle Verzeichnis dann natürlich der Desktop ist
Vom Stick oder generell von der Quelle aus angestossen enfällt die Quellangabe völlig, ...also wenn Batch und Datei in einem Ordner liegen.
mfg Ralf
Zitat:
%CD%
> Local returns the current directory string.
%CD%
> Local returns the current directory string.
Was soll das denn überhaupt bringen?? Wenn das Script vom Desktop ausgeführt wird, kann der Copy-Befehl wohl kaum so die Datei aufm Stick finden... da das aktuelle Verzeichnis dann natürlich der Desktop ist
Vom Stick oder generell von der Quelle aus angestossen enfällt die Quellangabe völlig, ...also wenn Batch und Datei in einem Ordner liegen.
mfg Ralf
Antwort 23 von Jaja
Zitat:
Was soll das denn überhaupt bringen?? Wenn das Script vom Desktop ausgeführt wird, kann der Copy-Befehl wohl kaum so die Datei aufm Stick finden... da das aktuelle Verzeichnis dann natürlich der Desktop ist
Was soll das denn überhaupt bringen?? Wenn das Script vom Desktop ausgeführt wird, kann der Copy-Befehl wohl kaum so die Datei aufm Stick finden... da das aktuelle Verzeichnis dann natürlich der Desktop ist
sicher, aber gemäß seiner inzwischen etwas präziseren aufgabenstellung soll das skript immer zusammen mit den zu kopierenden dateien in einem verzeichnis liegen.
siehe antw.5
Zitat:
script und datei liegen immer zusammen in einem ordner....
script und datei liegen immer zusammen in einem ordner....
Antwort 24 von son_quatsch
Aber (siehe Antwort 19) diese Ausgabe ergibt doch keinen Sinn:
Zitat:
C:\Dokumente und Einstellungen\renell\Desktop>cd
C:\Dokumente und Einstellungen\landgraf\Desktop
Wie kann das angezeigte Verzeichnis (renell) sich vom aktuellen (landgraf) unterscheiden?C:\Dokumente und Einstellungen\renell\Desktop>cd
C:\Dokumente und Einstellungen\landgraf\Desktop
Antwort 25 von ralfb
Beispiel zu aktuellen Pfad mal anders herum:
Xcopy kopiert an den aktuellen Pfad (fett gedruckt) ohne dass ich das Ziel angeben muss (ich bin da ja schon) ...aber ich muss die Quelle nennen
------------------------------------
C:\Dokumente und Einstellungen\ralf\Desktop>xcopy c:\test\test2.txt
C:\test\test2.txt
1 Datei(en) kopiert
C:\Dokumente und Einstellungen\ralf\Desktop>
---------------------------------------------
umgekehrt ist es genauso, ....befinde ich mich per Konsole im Quellordner oder führe von dort einen Befehl aus, muss ich nur die Datei angeben (kein Pfad dabei!) und natürlich das Ziel mit vollständigen Pfad.
Für Batchdatei die im gleichen Ordner wie die Datei liegt, gilt das gleiche. In AW geposte Zeilen benötigen definitiv keine Quellangaben
Ralf
*Threadedit* 15:35:25, 17.06.2008
Xcopy kopiert an den aktuellen Pfad (fett gedruckt) ohne dass ich das Ziel angeben muss (ich bin da ja schon) ...aber ich muss die Quelle nennen
------------------------------------
C:\Dokumente und Einstellungen\ralf\Desktop>xcopy c:\test\test2.txt
C:\test\test2.txt
1 Datei(en) kopiert
C:\Dokumente und Einstellungen\ralf\Desktop>
---------------------------------------------
umgekehrt ist es genauso, ....befinde ich mich per Konsole im Quellordner oder führe von dort einen Befehl aus, muss ich nur die Datei angeben (kein Pfad dabei!) und natürlich das Ziel mit vollständigen Pfad.
Für Batchdatei die im gleichen Ordner wie die Datei liegt, gilt das gleiche. In AW geposte Zeilen benötigen definitiv keine Quellangaben
Ralf
*Threadedit* 15:35:25, 17.06.2008
Antwort 26 von ralfb
menno ...noch ne Korrektur.
In AW2 geposte Zeilen benötigen definitiv keine Quellangaben
Ralf
In AW2 geposte Zeilen benötigen definitiv keine Quellangaben
Ralf
Antwort 27 von Teerbaby
Mir ist das immer noch zu hoch.
Wozu eine Batch, wenn ich verschiedene Dateien an verschiedenen Orten in ein Verzeichnis kopieren will?
Ich muss immer die Batch oder den Parameter beim Aufruf ändern (würde höchstens was bringen, wenn ich sehr lange Pfade habe). Ein Kontextmenüeintrag mit "senden an" wäre da aber komfortabler.
Wenn du alle Dateien aus einem Verzeichnis kopieren willst, wäre es schon einfacher (copy * ....). In das jeweilige Verzeichnis wechseln musst du aber trotzdem - dann kannst du auch wieder einfach über das Kontextmenü gehen.
Oder versteh ich einfach die Aufgabe überhaupt nicht?
Wozu eine Batch, wenn ich verschiedene Dateien an verschiedenen Orten in ein Verzeichnis kopieren will?
Ich muss immer die Batch oder den Parameter beim Aufruf ändern (würde höchstens was bringen, wenn ich sehr lange Pfade habe). Ein Kontextmenüeintrag mit "senden an" wäre da aber komfortabler.
Wenn du alle Dateien aus einem Verzeichnis kopieren willst, wäre es schon einfacher (copy * ....). In das jeweilige Verzeichnis wechseln musst du aber trotzdem - dann kannst du auch wieder einfach über das Kontextmenü gehen.
Oder versteh ich einfach die Aufgabe überhaupt nicht?
Antwort 28 von Arno_Nym
Ich denke mal, er will auf einem USB-Stick eine Batchdatei haben, die auf Doppelklick (oder wie auch immer sie gestartet wird) eine oder mehrere Dateien von ebendiesem USB-Stick in ein bestimmtes Verzeichnis kopiert.
Dabei grübelt er halt rum, weil der USB-Stick ja unter unterschiedlichen LW-Buchstaben auftauchen kann.
Die bisherigen Hinweise sollten allerdings zur Lösung genügen.
Arno
Dabei grübelt er halt rum, weil der USB-Stick ja unter unterschiedlichen LW-Buchstaben auftauchen kann.
Die bisherigen Hinweise sollten allerdings zur Lösung genügen.
Arno
Antwort 29 von renell
ja....
@ alle
es funzt mit dem %~dp0, was immer das auch sein soll, warscheinlich eine variable, die den aktuellen pfad ausliest, oder?
danke dir....
funzt jetzt von usb, diskette und netzwerk - vielen dank
@ alle
es funzt mit dem %~dp0, was immer das auch sein soll, warscheinlich eine variable, die den aktuellen pfad ausliest, oder?
danke dir....
funzt jetzt von usb, diskette und netzwerk - vielen dank
Antwort 30 von Arno_Nym
Zitat:
es funzt mit dem %~dp0, was immer das auch sein soll, warscheinlich eine variable, die den aktuellen pfad ausliest, oder?
es funzt mit dem %~dp0, was immer das auch sein soll, warscheinlich eine variable, die den aktuellen pfad ausliest, oder?
Klar funzt das ;o)
Was es ist, habsch doch in AW 7 geschrieben:
%~dp0 ist eine Batchvariable, die das Verzeichnis der Batchdatei selbst enthält (mit abschließendem Backslash).
Details dazu:
(Fast) jeder Batcher kennt die Batchvariablen %1, %2, %3 ... usw. Dies sind die Parameter, die einer Batchdatei beim Aufruf übergeben wurden, z.B.
c:\pfad\batchdatei.bat datei1 datei2Dann ist %1 halt "datei1", %2 ist "datei2" usw.
%0 ist nun - Tataa! - der gesamte Pfad+Name der Batchdatei selbst, oben also c:\pfad\batchdatei.bat
Die "Kringelsyntax" (Tilde) dient nun dazu, aus diesem gesamten Namen nur den LW+Pfad+Backslash zu extrahieren (d = Drive, p = Path), also
%~dp0 = LW:\Pfad\PS: Nur unter WinNT/2000/XP/2003/... verfügbar. Nicht bei Win9x.
Arno

