Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch Programm Copy soll unbekannten quellort kopieren

Frage Entwicklung Batch & Shell

Mitglied: TicoWrite

TicoWrite (Level 1) - Jetzt verbinden

28.01.2015, aktualisiert 31.01.2015, 1027 Aufrufe, 35 Kommentare

Hallo zusammen ich habe folgendes system:

Win7

Zu meinem Problem:

Ich möchte gerne eine Datei von einem Unbekannten quellort zu einem bekannten Zielort kopieren.
Das Problem ist ich weis nicht wo die Quelldatei extraiert wird kann ich den Copy befehl nicht anwenden bzw kenne ich vielleicht nicht die lautende Syntax !? Es soll also keine rolle spielen in welchem Pfad die besagte Datei kliegt. Würde es nicht reichen wenn man den Name der Datei kennt ?

So sollte es in der batch aussehen:

@echo on
copy "XY:\Readme.txt" f:\desktop\ /D /E /Y /I
pause
exit

ENDE

Kann mir da jemand helfen ? Ich scroll schon seit stunden links von google ab und komme zur keiner lösung!

Das muss doch zu machen sein !?
PS: Die batch wird oder soll im gleichen Quellort :YX\ ausgeführt

LG TicoWrite
35 Antworten
Mitglied: Pjordorf
28.01.2015 um 18:21 Uhr
Hallo,

Zitat von TicoWrite:
Ich möchte gerne eine Datei von einem Unbekannten quellort zu einem bekannten Zielort kopieren.
Nada.

Würde es nicht reichen wenn man den Name der Datei kennt ?
Nada 2

copy "XY:\Readme.txt" f:\desktop\ /D /E /Y /I
Hier hast du aber die Quelle angegeben, auch wenn die Syntax nicht zwingend korrekt ist

Das muss doch zu machen sein !?
Ja

PS: Die batch wird oder soll im gleichen Quellort :YX\ ausgeführt
Na, da kennst du ja dann die Quelle. So unbekannt ist die also nicht.

Zuerst nimmst du deine (vermutete) Quelle X und durchsuchst dort die Ordnerstruktur nach deiner Quelldatei. Wenn nicht in X dann vielleicht in Y usw. bis du deine Quelldatei hast oder eben nicht. Wenn nicht gefunden, ende deiner Batch. Falls gefunden den Ort die merken und dann dein Copy damit anstoßen. Soll es die Quelldatei mehrmals geben dann ...

http://www.administrator.de/frage/bestimmte-ordner-rekursiv-batch-l%C3% ... und anstelle DEL dein Copy....
http://www.administrator.de/frage/batch-dateitypen-rekursiv-suchen-umla ...
http://www.administrator.de/frage/ordnerstruktur-rekursiv-auflisten-531 ...

Gruß,
Peter
Bitte warten ..
Mitglied: TicoWrite
28.01.2015 um 18:34 Uhr
1.Die batch wird oder soll im gleichen Quellort :YX\ ausgeführt
Na, da kennst du ja dann die Quelle. So unbekannt ist die also nicht.

ja ebend nicht ! ich weiß ja nicht wo der Anwender die daten extraiert ! bzw die Batch !!!

2.Zuerst nimmst du deine (vermutete) Quelle X und durchsuchst dort die Ordnerstruktur nach deiner Quelldatei. Wenn nicht in X dann vielleicht in Y usw. bis du deine Quelldatei hast oder eben nicht. Wenn nicht gefunden, ende deiner Batch. Falls gefunden den Ort die merken und dann dein Copy damit anstoßen. Soll es die Quelldatei mehrmals geben dann ...

eh soviel zeit und speicherkapazität habe ich nicht um alle möglichkeiten durch zu prüfen ! wann soll denn die batch fertig werden 2050 ?
z.b eine prüf möglich keit:

is die batch in c:\
oder in c:\a
oder in c:\b
oder doch c:\f
oder g:\a\

wann soll ich da fertig werden !? oder hast du evtuell eine andere Lösung ?
Bitte warten ..
Mitglied: Pjordorf
28.01.2015 um 18:48 Uhr
Hallo,

Zitat von TicoWrite:
ja ebend nicht !
?!?

ich weiß ja nicht wo der Anwender die daten extraiert ! bzw die Batch !!!
Aber welche Datenträger in Frage kommen schon und auch wie diese von dir abgefragt werden können (Lokal, LAN, Internet, FTP, SMB, NFS, iSCSI....)?

eh soviel zeit
Die wirst du dir nehmen müssen wenn du nichts weist aber hinterher etwas Wissen willst.

und Speicherkapazität
Dazu braucht es nur etwas RAM .... um deine Batch laufen zu lassen ....

wann soll denn die batch fertig werden 2050 ?
Das hängt von deinen batcher Kenntnissen

is die batch in c:\
oder in c:\a
oder in c:\b
oder doch c:\f
oder g:\a\
Das nennt sich Rekursiv und ich habe dir 3 Links dazu schon oben genannt. Oder sollen wir dir deine Arbeit machen und dir die Batch erdenken und erstellen. Wenn das dein ziel ist, musst du was fertiges kaufen oder dir im Internet deiner Wahl was suchen. da gibt es auch einiges was dies können könnte und gar nicht gekauft werden muss...

wann soll ich da fertig werden !?
Auf einen C64 dauert es etwas länger, zugegeben.

oder hast du evtuell eine andere Lösung ?
Hast du dir die fertigen Lösungen von oben mal angeschaut wo du nur ein paar Kleinigkeiten ändern musst z.B. ein RD durch CP und dessen Parameter ersetzen?

Gruß,
Peter
Bitte warten ..
Mitglied: BirdyB
28.01.2015, aktualisiert um 18:52 Uhr
Ich versuche mich jetzt mal im Problemverständnis:
Wenn ich @TicoWrite richtig verstehe, dann liegt die Batch-Datei im gleichen Verzeichnis wie die zu kopierende Datei. Und damit ist die Lösung auch ganz einfach...
01.
copy datei d:\wasauchimmer
Fertig...

Wenn die Datei im Arbeitspfad liegt, muss man auch keinen Pfad angeben...
Bitte warten ..
Mitglied: TicoWrite
28.01.2015 um 20:15 Uhr
Verstanden hast du mich! @ BridyB

aber wenn ich nur den datei namen nehme : copy Readme.txt "f:\TEST Archive\"

bekomme ich einen syntax fehler !?
Bitte warten ..
Mitglied: TicoWrite
28.01.2015 um 20:20 Uhr
@ Pjordorf

erstmal danke für die links die hatte ich nicht gesehen dachte es wären eigene signatur links o.ä !

werde erst mal da rein schaun vielleicht geben die links aufschluss.

weil das was ich möchte ist ja nix anderes was andere programme z.b in einer setup.exe machen irgendwo daten erstellen. nur diese kennen / beziehen sich ja schon aufs ziel. !
Bitte warten ..
Mitglied: BirdyB
28.01.2015 um 20:28 Uhr
da374b54b61bca07635695d3b2545b1b - Klicke auf das Bild, um es zu vergrößern

Also bei mir funktioniert es...
Bitte warten ..
Mitglied: Endoro
28.01.2015 um 20:34 Uhr
Hey,
um festzustellen, wo sich eine Batch befindet, kannst du folgenden Code verwenden (Beispiel):
01.
@echo %~dpnx0
Gruß, Endoro
Bitte warten ..
Mitglied: 114757
28.01.2015, aktualisiert 29.01.2015
Es soll also keine rolle spielen in welchem Pfad die besagte Datei kliegt. Würde es nicht reichen wenn man den Name der Datei kennt ?
Also irgendeinen Root-Ordner wirst du wohl schon angeben können. Folgendes Script durchsucht den Ordner c:\root mit all seinen Unterordnern auf die Datei readme.txt und kopiert sie in dein Ziel.
01.
@echo off & setlocal enabledelayedexpansion 
02.
set /a counter=1 
03.
for /f "delims=" %%a in ('dir /b /s /a-d "c:\root\readme.txt"') DO @( 
04.
   if exist "F:\desktop\%%~nxa" ( 
05.
      set "fname=%%~na_!counter!%%~xa" 
06.
      set /a counter +=1 
07.
   ) else ( 
08.
      set "fname=%%~nxa" 
09.
10.
   copy "%%a" "F:\desktop\!fname!" 
11.
)
Das ganze kannst du ja von mir aus auch für andere Laufwerke wiederholen ...

Gruß jodel32
Bitte warten ..
Mitglied: TicoWrite
29.01.2015 um 07:27 Uhr
Ich habe jetzt diesen Code benutzt :

@echo on


set "Typen= Readmett.txt

set Pfad1=f:\


set Ziel="f:\Eigene Programme\Test\"


dir /b /c /s %Pfad1% %Typen% >Auswertung.txt



for /f "delims=" %%m in ('dir /c /s /b %Pfad1% %Typen% ') do copy "%%m" %Ziel%

pause
exit

Allerdings kopiert er mir alle datein die in f:\ sind ! ich möchte aber nur die Readmett.txt haben.

muss da was bei "Typen= geändert werden ?


jetzt versuch ich mal jodel´s code

Danke @Jodel & Endoro
Bitte warten ..
Mitglied: pieh-ejdsch
LÖSUNG 29.01.2015, aktualisiert 31.01.2015
moin TicoWrite,

bitte benutze für Deine Schnipsel die code tags <code> Codeschnipsel </code>.

Wenn Du beim Befehl dir zwei verschiedene Quellen zum durchsuchen angibst werden auch zwei Quellen ausgegeben. Es ist völlig ausreichend die Datei ab den zu dursuchenden Verzeichnis anzugeben.
01.
dir /s /b D:\Pfad\Datei.ext
Gruß Phil
Bitte warten ..
Mitglied: TicoWrite
30.01.2015 um 08:46 Uhr
01.
 @echo on 
02.
 
03.
 
04.
set "Typen= Readmett.txt  
05.
 
06.
set Pfad1=f:\  
07.
 
08.
 
09.
set Ziel="f:\Eigene Programme\Test\" 
10.
 
11.
 
12.
dir /b /c /s %Pfad1% %Typen% >Auswertung.txt  
13.
 
14.
 
15.
 
16.
for /f "delims=" %%m in ('dir /c /s /b %Pfad1% %Typen% ') do copy "%%m" %Ziel% 
17.
 
18.
pause 
19.
exit
aber das hab ich doch bei set "Type= doch gemacht oder wie muss das ausehen ? Oder muss ich ich die zeile 16 bearbeiten bei %Typen% ???
Bitte warten ..
Mitglied: BirdyB
LÖSUNG 30.01.2015, aktualisiert 31.01.2015
Also irgendwie habe ich das Gefühl, die Hilfestellung läuft hier aus dem Ruder...
Die Fragestellung von @TicoWrite bezieht sich eigentlich darauf, dass er eine Datei aus dem Arbeitsverzeichnis der Batch kopieren möchte... Die Codes hier durchsuchen allerdings ganze Pfade nach Dateinamen...

Just my 5 Cents...
Bitte warten ..
Mitglied: Pjordorf
30.01.2015, aktualisiert um 11:46 Uhr
Hallo,

Zitat von TicoWrite:
wie muss das ausehen ?
Nimm mal folgenden Code, Das echo 0ff kannst du ja in echo on jederzeit ändern falls du mehr sehen möchtest.
01.
@echo off 
02.
 
03.
set "Typen=Readmett.txt" 
04.
set "Pfad1=F:\" 
05.
set "Ziel="F:\Eigene Programme\Test"" 
06.
 
07.
echo. 
08.
echo Die datei wird gesucht und im aktuellen Ordner in Auswertung.txt gespeichert 
09.
echo ... 
10.
echo. 
11.
 
12.
dir /b /c /s %Pfad1%%Typen% >Auswertung.txt  
13.
 
14.
echo. 
15.
echo Datei Auswertung.txt gespeichert 
16.
echo. 
17.
 
18.
echo. 
19.
echo Kopieren der Datei. Bitte warten ... 
20.
echo. 
21.
 
22.
for /f "delims=" %%m in ('dir /b /c /s %Pfad1%%Typen%') do copy %%m %Ziel% 
23.
 
24.
echo. 
25.
echo Kopieren abgeschlossen 
26.
echo. 
27.
echo Inhalt vom Zielverzeichniss 
28.
echo. 
29.
 
30.
dir %ziel% 
31.
 
32.
echo. 
33.
 
34.
pause
Vergleich dein und diesen Code und finde heraus warum deiner es nicht tut.... Ich nehme an das du das Ergebnis so haben wolltest. Hinweis: auch nicht sichtbare Zeichen wie Leerzeichen sind gültige Zeichen und bezwecken etwas, auch in Batch...

Gruß,
Peter
Bitte warten ..
Mitglied: Endoro
30.01.2015 um 17:26 Uhr
Zitat von BirdyB:

Die Codes hier durchsuchen allerdings ganze Pfade nach Dateinamen...

Nö, meiner nicht. Was hier zu besichtigen ist, ist ein verbreitetes Foren-Phänomen.
Gruß, Endoro
Bitte warten ..
Mitglied: TicoWrite
31.01.2015, aktualisiert um 07:56 Uhr
Ich habe das mal ausprobiert:

01.
  @echo on 
02.
 
03.
set "Typen=Readmett.txt  
04.
 
05.
set "Pfad1=F:\" 
06.
 
07.
set "Ziel="F:\Eigene Programme\Test"  
08.
 
09.
echo.  
10.
 
11.
echo Die datei wird gesucht und im aktuellen Ordner in Auswertung.txt gespeichert  
12.
 
13.
echo ...  
14.
 
15.
echo. 
16.
 
17.
 
18.
 
19.
dir /b /c /s %Pfad1% %Typen% >Auswertung.txt   
20.
 
21.
echo.  
22.
 
23.
 
24.
echo Datei Auswertung.txt gespeichert  
25.
 
26.
echo.  
27.
 
28.
echo. 
29.
 
30.
echo Kopieren der Datei. Bitte warten ...  
31.
 
32.
 
33.
echo.  
34.
 
35.
 
36.
for /f "delims=" %%m in ('dir /b /c /s %Pfad1% %Typen% ') do copy %%m %Ziel%  
37.
 
38.
echo.  
39.
 
40.
echo Kopieren abgeschlossen  
41.
 
42.
echo.  
43.
 
44.
echo Inhalt vom Zielverzeichniss  
45.
 

Er kopiert nicht !
die bat schreibt mir nur die Auswertungs.txt und in dieser ist auch der Pfad zur Readmett.txt enthalten. das is ja schon mal gut.

aber ich glaube da muss ein anderer befehl hin für set Type oder in der for /f zeile !??
Bitte warten ..
Mitglied: 114757
31.01.2015 um 09:31 Uhr
kann ja auch nich ...., nehme mein Script von oben dann wuppt das ....
Deine vielen Echos helfen dir da auch nich ;-P
Bitte warten ..
Mitglied: Endoro
31.01.2015 um 11:31 Uhr
Hey,
wenn sich die grad laufende Batch und README.TXT im selben aber unbekannten Ordner befinden, kann die Textdatei mit folgendem Code irgendwohin kopiert werden:
01.
copy "%~dp0README.TXT" "X:\Zielpfad\Zielordner"
Gruß, Endoro
Bitte warten ..
Mitglied: Pjordorf
31.01.2015 um 12:36 Uhr
Hallo,

Zitat von TicoWrite:
Du hast mal wieder Leerzeichen an stellen eingefügt wo keine hin dürfen oder nötige Zeichen weg gelassen! Kein wunder das es wieder nicht funktioniert!
01.
set "Ziel="F:\Eigene Programme\Test"
muss aber
01.
set "Ziel="F:\Eigene Programme\Test""
lauten (du hast ein doppeltes Hochkomma ausgelassen) und deine
01.
dir /b /c /s %Pfad1% %Typen% >Auswertung.txt
muss lauten
01.
dir /b /c /s %Pfad1%%Typen% >Auswertung.txt
Und dein
01.
for /f "delims=" %%m in ('dir /b /c /s %Pfad1% %Typen% ') do copy %%m %Ziel%
kann auch nicht weil es ein
01.
for /f "delims=" %%m in ('dir /b /c /s %Pfad1%%Typen% ') do copy %%m %Ziel%
sein sollte (auch hier wieder Leerzeichen der Übeltäter)

die bat schreibt mir nur die Auswertungs.txt und in dieser ist auch der Pfad zur Readmett.txt enthalten
Nur diese eine Zeile wo deine ReadMett.txt liegt oder eine Auflistung aller Dateien? Meine Auswertung.txt ist nur 23 Bytes Groß und hat als Inhalt nur eine Zeile
F:\Cisco\ReadMett.txt
aber ich glaube da muss ein anderer befehl hin für set Type oder in der for /f zeile !??
Nein, du musst nur richtig abschreiben. Hier im Text werden aufeinander folgende Leerzeichen unterdrückt. Du hast es nämlich auch hier geschafft weitere Leerzeichen einzubauen
für set Type   oder in der for /f   zeile !
Dann gibt es auch keine Endlosschleifen oder Syntax Fehler.

Und so hast du 3 varianten für ein und das gleiche Problem. Eine Minimalst Version, eine schnelle Version und deine ursprüngliche aber zeitkostende Version.

Und du hast an fast jeder Zeile wieder unnötige Leerzeichen am ende eingefügt. Macht das dein verwendeter Editor oder du?

Gruß,
Peter
Bitte warten ..
Mitglied: TicoWrite
01.02.2015 um 12:04 Uhr
A: Ich habe den code ohne diese leerzeichen verwendet und es funktioniert nicht.
B: ich habe es mit den Leerzeichen versucht klappt nicht.
C: @ Pjordorf er listet alle datein auf die sich im verzeichnis f:\ und darunter enthaltenen datein auf ! + setzt er die Readmett.txt am ende der auswertung ein !
D: Es könnte aber auch sein das die batch den befehl (do) copy nicht kennt also nur : copy
F: Wenn alles nix hilft versuch ich Jodels32 code version !

LG TicoWrite
Bitte warten ..
Mitglied: Pjordorf
01.02.2015 um 14:11 Uhr
Hallo,

Zitat von TicoWrite:
A: Ich habe den code ohne diese leerzeichen verwendet und es funktioniert nicht.
Der Funktioniert, mehrmals wegen dir getestet

B: ich habe es mit den Leerzeichen versucht klappt nicht.
Das kann nicht gehen weil da an stellen dann Leerzeichen sind wo keine hingehören!

C: @ Pjordorf er listet alle datein auf die sich im verzeichnis f:\
Das ist eines dieser Leerzeichen die das veranstaltet. Bitte den Code genauesten rauskopieren (Rechts oben im Textfeld auf Quellcode gehen und einfach kopieren) und nutzen. Es wird definitiv nur der Treffer der Readmett.txt in die Datei Auswertung.txt reingehauen. Bei war es nur ein Treffer da die Datei ReadMett.txt nur einmal (1) existierte - also korrekt.

Readmett.txt am ende der auswertung ein !
Wenn es bei dir eben die letzte Datei ist, dann ist das ende schon OK, nur nicht das dir alles aufgeschrieben wird. Da dran ist ein Leerzeichen Schuld.

D: Es könnte aber auch sein das die batch den befehl (do) copy nicht kennt
Blödsinn.

Und bitte genau schauen was hier steht (Zeichen für Zeichen)
01.
set "Typen=Readmett.txt" 
02.
set "Pfad1=F:\" 
03.
set "Ziel="F:\Eigene Programme\Test"" 
04.
dir /b /c /s %Pfad1%%Typen%>Auswertung.txt 
05.
for /f "delims=" %%m in ('dir /b /c /s %Pfad1%%Typen%') do copy %%m %Ziel% 
06.
dir %ziel% 
07.
pause
Schau dir genau an wie es in Zeile 3, 4 und 5 aussieht.
Zeile 4 generiert die Auswertung.txt wo nur die gefunden Pfade und Dateinamen von Readmett.txt drinstehen, sonst nichts...
Zeile 5 Kopiert ohne einen Syntaxfehler auszulösen und die Datei ist anschließend in dein %Ziel%, dazu die zusätzlichen doppelten hoch Kommata in Zeile 3.

Zur Info, das ganze ist auf ein Windows 7 64 Prof mit allen Patches... Obwohl das auch mit MS DOS so laufen sollte...

Gruß,
Peter
Bitte warten ..
Mitglied: TicoWrite
02.02.2015 um 10:39 Uhr
@Pjordorf ich habe deinen code benutzt und es funktioniert nicht. irgendwas stimmt da nicht.

ich habe den code jetzt etwas verändert aller dings kopiert er mir nicht nur die Readmett.txt sondern auch alle anderen datein die unt f:\ zu finden sind
... ich glaube irgendwas muss in der for /f schleife geändert werden. da das system bei deinem wie auch meinem code das file nicht findet.

ob es an (" ") mit oder ohne und oder ("%%m") liegt ? ich bin echt ratlos und mir wachsen schon graue haare .... denn die batch gibt mir dann die ausgabe das in der schleife nur in f:\ gesucht wird. aber die schleife soll auch alle unterordner mit einbeziehen !? grrr ...

Ich werde euch mal ein screenshot zeigen wie sich die bat verhält beim ausführen und wie der code der bat aussieht . nicht das ihr mich noch für total bescheuert haltet ...

anbei leg ich noch den jetztigen code bei der alle datein kopiert:

01.
@echo on 
02.
set "Typen= Readmett.txt" 
03.
set "Pfad1=f:\" 
04.
set "Ziel="f:\Eigene Programme\Test\"" 
05.
dir /b /c /s %Pfad1%%Typen%>Auswertung.txt 
06.
for /f "delims=" %%m in ('dir /c /s /b %Pfad1%%Typen%') do copy "%%m" %Ziel% 
07.
dir %ziel% 
08.
pause 
09.
exit
bitte sagt mir wie ich hier einen screenshot einfügen kann sofern das möglich ist ! scheint ja ein recht modernes forum zu sein !
Bitte warten ..
Mitglied: Pjordorf
02.02.2015, aktualisiert um 11:07 Uhr
Hallo,

Zitat von TicoWrite:
>es funktioniert nicht. irgendwas stimmt da nicht.
Das ist aber keine mir bekannte Fehlermeldung

("%%m")
?!?

Ich werde euch mal ein screenshot zeigen
Gut

nicht das ihr mich noch für total bescheuert haltet ...


Dein Code ist falsch! Wieder ein Leerzeichen wo keins sein darf! Tausche Zeile 1 gegen Zeile 3
01.
set "Typen= Readmett.txt" 
02.
 
03.
set "Typen=Readmett.txt"
bitte sagt mir wie ich hier einen screenshot einfügen
Deine Frage bearbeiten klicken, dort Bilder hinzufügen und den resultierende Link dann hier rein stellen.
Bitte warten ..
Mitglied: Pjordorf
02.02.2015 um 11:25 Uhr
Hallo,

Zitat von TicoWrite:
funktioniert nicht
Dein Code genommen
E:\Test>copyfile 
E:\Test>set "Typen= Readmett.txt" 
E:\Test>set "Pfad1=E:\" 
E:\Test>set "Ziel="E:\Eigene Programme\Test\"" 
E:\Test>dir /b /c /s E:\ Readmett.txt 1>Auswertung.txt 
Datei nicht gefunden 
E:\Test>for /F "delims=" %m in ('dir /c /s /b E:\ Readmett.txt') do copy "%m" "E:\Eigene Programme\Test\" 
^CBatchvorgang abbrechen (J/N)? j
Hier ist dein set Typen= Readmett.txt der Übeltäter

Hier die Ausgabe mit mein geänderte Code
E:\Test>set "Typen=Readmett.txt" 
E:\Test>set "Pfad1=E:\" 
E:\Test>set "Ziel="E:\Eigene Programme\Test\"" 
E:\Test>dir /b /c /s E:\Readmett.txt 1>Auswertung.txt 
E:\Test>for /F "delims=" %m in ('dir /c /s /b E:\Readmett.txt') do copy "%m" "E:\Eigene Programme\Test\" 
E:\Test>copy "E:\Cisco\ReadMett.txt" "E:\Eigene Programme\Test\" 
        1 Datei(en) kopiert. 
E:\Test>dir "E:\Eigene Programme\Test\" 
 Datenträger in Laufwerk E: ist Data 
 Volumeseriennummer: EE85-A833 
 Verzeichnis von E:\Eigene Programme\Test 
02.02.2015  11:19    <DIR>          . 
02.02.2015  11:19    <DIR>          .. 
02.02.2015  11:03                25 ReadMett.txt 
               1 Datei(en),             25 Bytes 
               2 Verzeichnis(se), 362.487.427.072 Bytes frei 
E:\Test>pause 
Drücken Sie eine beliebige Taste . . .
ich hab nur Laufwerk F gegen E getauscht, mangels F:

Und nein, das habe ich nicht im Editor nachgebastelt
9a2e46f058ef76ed774c3b2989c2dc86 - Klicke auf das Bild, um es zu vergrößern

Gruß,
Peter
Bitte warten ..
Mitglied: TicoWrite
02.02.2015 um 15:59 Uhr
schreib mal bitte nur den bat code ! vom fenster aus siehts ja ganz anders aus !
Bitte warten ..
Mitglied: TicoWrite
02.02.2015 um 16:13 Uhr
schon gut hat sich erledigt hab den fehler gefunden dank pjordorf ... aber es war ein andere fehler ! schau hier :

01.
@echo on 
02.
set "Typen= Readmett.txt" 
03.
set "Pfad1=f:\" 
04.
set "Ziel="f:\Eigene Programme\Test\"" 
05.
dir /b /c /s %Pfad1%%Typen%>Auswertung.txt 
06.
for /f "delims=" %%m in ('dir /c /s /b %Pfad1%%Typen%') do copy %Typen% %Ziel% 
07.
dir %ziel% 
08.
pause 
09.
exit
der fehler war in zeile 8 und war do copy (%Typen%) hätte da hin gemust !

Naja jeder macht mal fehler aber dennoch ein super danke schön für euch alle und danke pjordorf dein letzter beitrag hat meinen denk fehler aufgezeigt.

lieben gruß TicoWrite

jetzt kanns endlich weiter gehen watt ne geburt ...
Bitte warten ..
Mitglied: Pjordorf
02.02.2015 um 16:15 Uhr
Hallo,

Zitat von TicoWrite:
schreib mal bitte nur den bat code ! vom fenster aus siehts ja ganz anders aus !
01.
set "Typen=Readmett.txt" 
02.
set "Pfad1=F:\" 
03.
set "Ziel="F:\Eigene Programme\Test"" 
04.
dir /b /c /s %Pfad1%%Typen%>Auswertung.txt 
05.
for /f "delims=" %%m in ('dir /b /c /s %Pfad1%%Typen%') do copy %%m %Ziel% 
06.
dir %ziel% 
07.
pause
Nur dein F: anstelle mein E: getauscht.

Gruß,
Peter
Bitte warten ..
Mitglied: TicoWrite
02.02.2015 um 16:22 Uhr
also bei mir klappt nur der von mir letzte gepostete code!

wenn ich bei dir es so schreibe wie in zeile 1 und 5 dann klappt es nicht !

aber jetzt läufts danke euch

@114757 sorry das ich nicht dein code mal ausprobiert habe aber dein code läuft bestimmt auch ;)
Bitte warten ..
Mitglied: Pjordorf
LÖSUNG 02.02.2015, aktualisiert 03.02.2015
Hallo,

Zitat von TicoWrite:
hab den fehler gefunden
Nein, nicht wirklich. Der Fehler ist in Zeile 2, das Leerzeichen nach dem Typen= oder vor dem Readmett.txt. Dann klappt auch Zeile 5 und 6 sogar ohne Änderung. (Zeile 8 ist ja nur eine pause).

Und wenn du dein jetzige Code nimmst, reicht ein
01.
@echo on 
02.
set "Typen= Readmett.txt" 
03.
set "Ziel="f:\Eigene Programme\Test\"" 
04.
copy %Typen% %Ziel% 
05.
dir %ziel% 
06.
pause 
07.
Exit
Diers setzt voraus das deine Readmett.txt im Verzeichnis vom Code liegt UND deine Readmett.txt ein Leerzeichen im Dateiname vor dem "R" hat.

Wer hat Dateinamen mit führende Leerzeichen?

01.
set "Typen= Readmett.txt"
Ist dein Fehler

Gruß,
Peter
Bitte warten ..
Mitglied: 114757
02.02.2015, aktualisiert um 16:56 Uhr
Zitat von TicoWrite:
der fehler war in zeile 8 und war do copy (%Typen%) hätte da hin gemust !
So ein Bullshit ... Quatsch, dann bräuchtest du die FOR Schleife ja überhaupt nicht, denn in %%m ist ja immer der komplette Pfad zur Datei.
by the way der Parameter /c im dir Befehl ist überflüssig
01.
for /f "delims=" %%m in ('dir /s /b %Pfad1%%Typen%') do copy "%%m" %Ziel%
Ess erst mal dein Mettbrötchen auf ....

Wir sind hie ja schon a bisserl länger mit Batch unterwegs als du.

Und außerdem wird dein Script beim zweiten Durchlauf deine Datei in deinem Zielverzeichnis finden, weil du als Quelle und Ziel das selbe Laufwerk verwendest bzw. dein Ziel ein Unterordner des Quellsuchordners ist !!!
Bitte warten ..
Mitglied: Pjordorf
LÖSUNG 02.02.2015, aktualisiert 03.02.2015
Hallo,

Zitat von TicoWrite:
also bei mir klappt nur der von mir letzte gepostete code!
Nicht wirklich

dann klappt es nicht !
Du könntest aber mal die Güte haben und den (die) Fehler mal nennen und wo diese auftauchen!

aber jetzt läufts danke euch
Nein, tut es nicht

Sollte deine Datei Readmett.txt allerdings ein Leerzeichen an erster Stelle des Datenamens haben, oder sonst ein Zeichen dort welches aber von Windows als leeres Zeichen dargestellt wird .... Warum ich darauf komme? Weil du anscheinend das so hast denn sonst würdest du nicht immer wieder ein Leerzeichen in dein
01.
"set Typen= Readmett.txt"
einbauen.

Ich habe mir mal solch eine (unnormale) Datei erzeugt im Windows wobei ich nicht weiß wie du die erstellt hast. Windows lässt es nämlich nicht zu einfach ein Leerzeichen als erstes Zeichen zu nutzen, egal ob beim erstellen, umbenennen oder kopieren. Ich habe dazu linke ALT Taste + Nummernblock 255 verwendet, was ein weiches Leerzeichen erstellt - das normale Leerzeichen wäre ein ALT + Nummernblock 032. Der verwendete und darstellende Zeichensatz ist nicht unwichtig hierbei.

Im Windows Explorer
6f5017556b4d4a0ce4764f7175c1a12c - Klicke auf das Bild, um es zu vergrößern
Beachte die normale Schreibweise, die unnatürliche (führendes weiches Leerzeichen) und dessen Kopie (welches wieder in normal durch das OS erstellt wird)

Im CMD Fenster
04.10.2014  22:54    <DIR>          Default 
05.10.2014  18:40    <DIR>          UK Test L2 
02.02.2015  16:37                24 Read1mett - Kopie.txt 
02.02.2015  17:12                24 Read1mett.txt 
02.02.2015  16:37                24  Readmett.txt
Und was dann in der Auswertung.txt erzeugt wird
E:\Cisco\ÿReadmett.txt
Mit folgenden Code ist aber auch das zu lösen
01.
@echo on 
02.
set "Typen=*Readmett.txt" 
03.
set "Pfad1=E:\" 
04.
set "Ziel="E:\Eigene Programme\Test"" 
05.
dir /b /c /s %Pfad1%%Typen%>Auswertung.txt 
06.
for /f "delims=" %%m in ('dir /b /c /s %Pfad1%%Typen%') do copy "%%m" %Ziel% 
07.
dir %ziel% 
08.
pause
Dabei bleibt das weiche Leerzeichen am Anfang des Dateinamens  Readmett.txt sogar erhalten. Tausche mein E: gegen dein F:.

Ergebnis Im CMD Fenster, da wird auch kein Syntaxfehler oder Date nicht gefunden angegeben.
E:\Test>set "Typen=*Readmett.txt" 
E:\Test>set "Pfad1=E:\" 
E:\Test>set "Ziel="E:\Eigene Programme\Test"" 
E:\Test>dir /b /c /s E:\*Readmett.txt 1>Auswertung.txt 
E:\Test>for /F "delims=" %m in ('dir /b /c /s E:\*Readmett.txt') do copy "%m" "E:\Eigene Programme\Test" 
E:\Test>copy "E:\Cisco\ Readmett.txt" "E:\Eigene Programme\Test" 
        1 Datei(en) kopiert. 
E:\Test>dir "E:\Eigene Programme\Test" 
 Datenträger in Laufwerk E: ist Data 
 Volumeseriennummer: EE85-A833 
 Verzeichnis von E:\Eigene Programme\Test 
02.02.2015  17:40    <DIR>          . 
02.02.2015  17:40    <DIR>          .. 
02.02.2015  16:37                24  Readmett.txt 
               1 Datei(en),             24 Bytes 
               2 Verzeichnis(se), 362.130.333.696 Bytes frei 
E:\Test>pause 
Drücken Sie eine beliebige Taste . . .
Die Auswertung.txt hat nur einen Eintrag, nämlich den Pfad mit Dateinamen. Achtung: hier ist es nicht ein Leerzeichen was dort als erste Stelle des Dateinamens dargestellt wird (Zeichensätz....)
E:\Cisco\ÿReadmett.txt
. Sonst befindet sich da kein Eintrag weiter, da die  Readmett.txt nur 1 mal in LW E: existiert. Es wird daher auch nur 1 Datei kopiert, eine 2te würde sowieso überschreiben, aber in der Auswertung.txt aufgeführt sein.

Gruß,
Peter
Bitte warten ..
Mitglied: Pjordorf
02.02.2015, aktualisiert um 18:28 Uhr
Hi,

Zitat von 114757:
by the way der Parameter /c im dir Befehl ist überflüssig
Der /b ebenfalls, aber gehen wir mal davon aus das der TO dieses "dir gedöhns" von seiner vorhergehende Zeile genommen hat

Und außerdem wird dein Script beim zweiten Durchlauf
Meins auch Aber er wird zwar finden, in der Auswertung.txt auch eintragen, aber nicht kopieren und überschreiben da quelle und Ziel identisch ist. Da kommt dann eben ein
E:\Test>copy "E:\Eigene Programme\Test\ Readmett.txt" "E:\Eigene Programme\Test" 
Die Datei kann nicht in sich selbst kopiert werden. 
        0 Datei(en) kopiert.
Unschön eben ....

Wofür der TO die Auswertung.txt benötigt, hierfür jedenfalls nicht...

Gruß,
Peter
Bitte warten ..
Mitglied: Endoro
02.02.2015, aktualisiert um 19:44 Uhr
Hey,
im Gegensatz zu nachhängenden sind führende Leerzeichen in Windows erlaubt und lassen sich mit Boardmitteln leicht erzeugen. Man sollte aber unbedingt darauf verzichten, wenn schon ich das sogar bei kommerziellen Programmen gefunden habe

8a27391a537501a87d66ae98151b38cd - Klicke auf das Bild, um es zu vergrößern


Gruß, Endoro
Bitte warten ..
Mitglied: TicoWrite
03.02.2015 um 07:06 Uhr
LOL jetzt muss ich schmunzeln ... also der code den ich als letztes verfasst habe läuft . Er kopiert und trägt die Datei in die log ein !

vielleicht liegts ja an der Win 7 Home Edition das es geht bei meiner zeile 2 , wenn ich es so zusammen schreibe wie bei Pjordorf dann geht die bat direkt wieder zu. oder in zeile 8 statt (%Typen%) %%m oder "%%m" zu verwenden bekomme ich die fehler ausgabe das die datei nicht aufzufinden sei.

Ich denke das sich der befehl in zeile 8 ( do copy %typen%) auf die zeile 2 set Typen= bezieht und so war es auch !

Naja jedenfalls funktioniert jetzt der code

Und leute wenn ihr schon so lange hier seit ... schmunzel ... dann wäre es jetzt auch nicht schlimm es zu akzeptieren das es funktioniert.

Wie gesagt ich kann euch gerne ein Screenshot oder Video machen ))
Bitte warten ..
Mitglied: Endoro
03.02.2015, aktualisiert um 07:54 Uhr
Hey, ich hab zwischenzeitlich aus den Augen verloren, worum es ging. Wenn du das bitte kurz zusammenfassen kannst, ist dir mein Applaus gewiss.

Zu meinem Problem:

Ich möchte gerne eine Datei von einem Unbekannten quellort zu einem bekannten Zielort kopieren.

@echo on
copy "XY:\Readme.txt" f:\desktop\ /D /E /Y /I
pause
exit

PS: Die batch wird oder soll im gleichen Quellort :YX\ ausgeführt


Das jedenfalls war nicht dein Problem. Aber schön, dass du ein anderes lösen konntest

Gruss, Endoro.
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...