Supportnet Computer
Planet of Tech

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:

COPY datei.exe c:\test


Ist 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

Antwort 3 von Teerbaby

oder eben
copy %1 c:\xyz


Antwort 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

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


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

COPY "%~dp0datei.exe" a:\datei.exe


Hinweis: %~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:
Zitat:
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

Antwort 10 von renell

mit %~dp0 davor geht es nicht....

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.

Antwort 12 von Arno_Nym

Äh, welches Betriebssystem?

%~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.

Antwort 14 von Arno_Nym

Tipp zum Testen/Fehlersuche:

echo COPY "%~dp0datei.exe" a:\datei.exe
pause

Dann 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:
xcopy "meldung.txt" "C:\WINDOWS\system32\" /s /d /y


wenn ich es so eingebe geht es...

xcopy "C:\Dokumente und Einstellungen\renell\Desktop\meldung.txt" "C:\WINDOWS\system32\" /s /d /y


aber 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

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.

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:

@echo off
echo xcopy "%~dp0meldung.txt" "C:\WINDOWS\system32\" /s /d /y
echo. & pause

Was gibt er aus?

Arno

Antwort 19 von renell

@ antwort 16
ergebnis bei:

xcopy %CD%\meldung.txt" "C:\WINDOWS\system32\drivers\etc\ /s /d /y


Unzulä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 /y


Antwort 20 von renell

@ antwort 19

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


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

Zitat:
%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


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....


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?

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


  • Antwort 26 von ralfb

    menno ...noch ne Korrektur.
    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?

    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

    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

    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?

    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 datei2

    Dann 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

    Ich möchte kostenlos eine Frage an die Mitglieder stellen:


    Ähnliche Themen:


    Suche in allen vorhandenen Beiträgen: