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 Datei kopieren in Verzeichnis in Pfad mit Sonderzeichen

Frage Microsoft Windows Tools

Mitglied: OKIDOKI

OKIDOKI (Level 1) - Jetzt verbinden

08.02.2012 um 15:15 Uhr, 5008 Aufrufe, 21 Kommentare

Guten Tag,
trotz eines Beitrags von bastla https://www.administrator.de/index.php?content=36547 bleiben bei mir noch Fragen ...

Ich möchte gerne auch eine Datei kopieren. Allerdings kommen im Pfad Sonderzeichen oder öäü vor. Außerdem fragt er, ob es sich beim Ziel um eine Datei oder um einen Ordner handelt.
Gerne würde ich den Pfad aus einer Datei auslesen und eine Datei in diesen Pfad kopieren, trotz Sonderzeichen. Alles ohne Nachfrage...

01.
for /L %%i in (1,1,5) do copy /y liesmal.txt location%%i.txt
liesmla.txt soll kopiert werden. In location.txt steht der Pfad, z.B. "C:\Temp\Daten zum Löschen\Neuer Ordner"
Muss der ohne Anführungszeichen stehen, oder liegt es vielleicht daran?
Irgendwie verstehe ich die Syntax nicht, der kopiert mir mehrere Dateien in das aktuelle Verzeichnis, aber nicht da hin wo er soll...
Vielleicht kann noch einmal jemand draufgucken

Danke, OKIDOKI
Mitglied: 60730
08.02.2012 um 15:29 Uhr
moin,

Irgendwie verstehe ich die Syntax nicht, der kopiert mir mehrere Dateien in das aktuelle Verzeichnis, aber nicht da hin wo er soll...
  • meistens hilft es schon, wenn man komplex erscheinende Zusammenhänge zerlegt und sich dann informiert, was ein einzelner Schritt macht.

C:\>copy /? 
Kopiert eine oder mehrere Dateien an eine andere Position. 
 
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B] Quelle [/A | /B] 
     [+ Quelle [/A | /B] [+ ...]] 
     [Ziel [/A | /B]]
[OT]40 Tage weg und nix verpasst[/OT]
Bitte warten ..
Mitglied: bastla
08.02.2012 um 15:37 Uhr
Hallo OKIDOKI!

Wenn Du vorweg
set "location=C:\Temp\Daten zum Löschen\Neuer Ordner"
verwendet hast, musst Du natürlich auch die Variable %location% angeben (da ansonsten, wie Du ja schon bemerkt hast, natürlich nur der Text "location" verwendet wird):
for /L %%i in (1,1,5) do copy liesmal.txt "%location%\%%i.txt"
Da Du hier "copy" in einem Batch verwendest, braucht es für das Überschreiben einer ev schon vorhandenen Zieldatei kein "/y" (steht etwas unterhalb des von T-Mo geposteten Auszugs in der Onlinehilfe).

Anführungszeichen pflege ich erst bei der Verwendung zu setzen, nicht bereits bei der Zuweisung zur Variablen (das erste Anführungszeichen ober befindet sich schon vor dem Variablennamen).

Hinsichtlich der Sonderzeichen: Wenn Du diese mit einem ASCII-Editor eingibst oder etwa per
echo set "location=C:\Temp\Daten zum Löschen\Neuer Ordner">Batchdatei.cmd
aus der CMD-Shell die entsprechende Zeile erzeugst, sollten sie auch funktionieren ...

Grüße
bastla

P.S.: Für den oben ("trotz eines Beitrags von bastla") verlinkten Beitrag kann ich aber nix ...
Bitte warten ..
Mitglied: 60730
08.02.2012 um 15:47 Uhr
Salü Bastla,

ich vermute, der Kollege wil gar nicht forlen, sondern stinknormal forfen.
also nix mit Zähler - mir scheint dieses Tutorial, von dem ich früher immer dachte, es wäre garnicht nötig, müsste mal gefunden werden.
Man(n) könnte Alternativ natürlich den anderen Teil der Befehlskette ähnlich zerlegen und den via /? erzeugten Output man inputten.


Gruß
Bitte warten ..
Mitglied: bastla
08.02.2012 um 15:56 Uhr
Hallo T-Mo!

Bei näherer Betrachtung von
Gerne würde ich den Pfad aus einer Datei auslesen
wirst Du vermutlich mit Deiner Vermutung richtig liegen - aber schau mer mal (und nehmen wir dann einfach chcp 1252) ...

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
08.02.2012 um 20:02 Uhr
Guten Abend, hier ist der Kollege

leider funktioniert bastlas Vorschlag bei mir nicht...
Inhalt location.txt: C:\Temp\Daten zum Löschen\Neuer Ordner
Komischerweise will er 5 Dateien anlegen, kann aber 5x den Pfad nicht finden:

01.
@echo off & setlocal  
02.
chcp 1252>nul  
03.
set "location=location.txt" 
04.
for /L %%i in (1,1,5) do copy liesmal.txt "%location%\%%i.txt" 
05.
chcp 850>nul
OKIDOKI
Bitte warten ..
Mitglied: bastla
08.02.2012 um 21:45 Uhr
Hallo OKIDOKI!
Komischerweise will er 5 Dateien anlegen
Wieso komisch? Deine Schleife zählt ja von 1 bis 5 ...

Zum Einlesen der ersten Zeile einer Datei kannst Du
set /p location=<location.txt
verwenden, wenn es mehrere Zeilen sein sollen, brauchst Du eine "for /f"-Schleife ...

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
09.02.2012 um 08:34 Uhr
Hallo bastla,
leider geht es immer noch nicht:

01.
@echo off & setlocal  
02.
set "location=<location.txt" 
03.
for /L %%i in (1,1,1) do copy liesmal.txt "%location%\%%i.txt" 
04.
Pause
Jetzt kommt die Meldung: Syntax für den Dateiname, Verzeichnisnamen oder Datenträgerbezeichnung falsch

Was kann ich tun?
Bitte warten ..
Mitglied: Biber
09.02.2012 um 09:17 Uhr
Moin OKIDOKI,

Zitat von OKIDOKI:
Hallo bastla,

Was kann ich tun?
Vergleiche mal bastlas "Set /p Location="-Zeile mit deiner "set location="-Zeile...

Grüße
Biber
Bitte warten ..
Mitglied: OKIDOKI
09.02.2012 um 09:21 Uhr
Moin Biber,

habe ich gemacht
Jetzt kommt noch die Meldung Syntaxfehler ...

Oh, mann ...
Gruß OKIDOKI
Bitte warten ..
Mitglied: bastla
09.02.2012 um 09:47 Uhr
Hallo OKIDOKI!

Vielleicht sollten wir jetzt doch einmal darüber reden, was Du eigentlich vorhast - die Verwendung der Zählschleife sieht etwas abenteuerlich aus ...

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
09.02.2012 um 10:27 Uhr
moin zusammen,

Ich weis ja nicht, wie ihr das seht. Vllt stehen einfach nur zuviel Bäume vor dem Wald. Aber:
Die Anforderung
for /L %%i in (1,1,5) do copy /y liesmal.txt location%%i.txt
liesmla.txt soll kopiert werden. In location.txt steht der Pfad, z.B. "C:\Temp\Daten zum Löschen\Neuer Ordner"
Inhalt location.txt: C:\Temp\Daten zum Löschen\Neuer Ordner (also ohne Anführungszeichen)

Da es bisher knapp vorbeigeschrammt ist, vfolgender Vorschlag:
Nimm xcopy - das erstellt auch den fehlenden Pfad mit.
01.
@echo off & setlocal  
02.
chcp 1252>nul  
03.
set /p location=< location.txt 
04.
for /L %%i in (1,1,5) do xcopy liesmal.txt "%location%\%%i.txt" 
05.
chcp 850>nul
PS. soll jetz Liesl dorthin oder kommt es dort her?
der kopiert mir mehrere Dateien in das aktuelle Verzeichnis, aber nicht da hin wo er soll...

Pps.
die Verwendung der Zählschleife sieht etwas abenteuerlich aus ...
ist auch nur ein copy and paste Syntaxfehler.
Bitte warten ..
Mitglied: OKIDOKI
09.02.2012 um 10:46 Uhr
Hallo bastla,

das ist eine gute Idee!

Also, ich möchte eine Datei an einen anderen Ort kopieren. Der Pfad ist in einer Textdatei gespeichert (bspw: "C:\Temp\Daten zum Löschen\Neuer Ordner")
Dort, wo sie hinkopiert werden soll, soll es ohne Nachfrage geschehen.
Zusatzfrage: Wie soll der Pfad gespeichert werden, so "Pfad" oder ohne Gänsefüße?

Danke für deine Mühe!
Gruß OKIDOKI
Bitte warten ..
Mitglied: 60730
09.02.2012 um 11:02 Uhr
moin,

  • Gegenfrage 1: Sind Leherzeichen im Pfad zu erwarten?
  • Gegenfrage 2: wieviel Gewicht spart du beim versenden der Batch, wenn die unnützerweise Anführungszeichen mitführt?
  • Gegenfrage 3: Hattest du schon Erfolg beim finden des Tutorials zur Schleifenbildung?
Bitte warten ..
Mitglied: bastla
09.02.2012 um 11:19 Uhr
Hallo OKIDOKI!

Unter der Annahme, dass es den Zielpfad tatsächlich noch nicht gäbe, wäre der Vorschlag von PH sinnvoll, "xcopy" zu verwenden:
01.
@echo off & setlocal 
02.
chcp 1252>nul 
03.
set /p "location=<location.txt" 
04.
xcopy /y liesmal.txt "%location%\" 
05.
chcp 850>nul
In der Textdatei braucht der Pfad keine Füße - erst bei der Verwendung im Kopierbefehl sind sie dann sinnvoll bzw aufgrund Deines Beispieles auch nötig ...

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
09.02.2012 um 14:47 Uhr
Hallo bastla und TimoBeil,

leider kopiert er nach bastals Vorschlag die Datei nur nach C:, obwohl der Pfad C:\Temp\Daten zum Löschen\Neuer Ordner lautet (ob mit oder ohne Gänsefüße...)

Der Zielfpfad ist aber vorhanden, weil ich den vorher mit BrowseForFolder ermittlet habe. Der Pfad steht dann in location.txt

zu TimoBeil:
Gegenfrage 1: Sind Leherzeichen im Pfad zu erwarten? ja, in jedem Fall, auch Sonderzeichen o.ä. sind möglich
Gegenfrage 2: wieviel Gewicht spart du beim versenden der Batch, wenn die unnützerweise Anführungszeichen mitführt? Das wäre kein Problem, die kann ich mit ausgeben oder weglassen
Gegenfrage 3: Hattest du schon Erfolg beim finden des Tutorials zur Schleifenbildung? Da ist mir jetzt der Zusammenhang unklar


Viele Grüße OKIDOKI
Bitte warten ..
Mitglied: pieh-ejdsch
09.02.2012 um 15:00 Uhr
issjahglor

01.
set /p "location=<location.txt"
isjahrochvöllig anners als
01.
set /p location=<location.txt
1.eres Erwartet eine Eingabe und letzteres setzt als VariablenInhalt die erste Zeile der Datei.

Zitat von Biber:
Vergleiche mal bastlas "Set /p Location="-Zeile mit deiner "set location="-Zeile...


Zitat von pieh-ejdsch:
Ich weis ja nicht, wie ihr das seht. Vllt stehen einfach nur zuviel Bäume vor dem Wald.
ist auch nur ein copy and paste Syntaxfehler.
Bitte warten ..
Mitglied: bastla
09.02.2012 um 15:07 Uhr
@PH
Wo Du Recht hast, hast Du Recht - typischer Fall von "zu gut gemeint" ...

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
09.02.2012 um 15:09 Uhr
Super issjahglor!

Hat endlich auf Anhieb funktioniert!

Ergäzung: Esw wird sogar der Pfad (laut location) angelegt, sofern er noch nicht vorhanden ist.

Danke an bastla, issjahglor, TimBeil und Biber für eure kompetente, megaschnelle und vor allem geduldige Unterstützung.

Danke OKIDOKI

PS: Bald gibt es gar keine Probleme mehr, die dieses Forum nicht schon behoben hat!!!
Bitte warten ..
Mitglied: pieh-ejdsch
09.02.2012 um 15:12 Uhr
Höhöhö,

kene Namensverdrehung hier
01.
if "pieh-ejdsch" equ "issjahglor" (echo(Name richtig.) else echo(Bitte korrigieren.
Gruß Phil
Bitte warten ..
Mitglied: bastla
09.02.2012 um 15:51 Uhr
Hallo OKIDOKI!

Auch wenn schon "Ende gut" ist - warum steht der Pfad, den Du per "BrowseForFolder" geholt hast, in einer Datei und nicht in einer Variablen?

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
09.02.2012 um 16:01 Uhr
Also:

Danke pieh-ejdsch [ich habe den Guttenberg gemacht] (copy-paste-Fehler ;-()


Auch wenn schon "Ende gut" ist - warum steht der Pfad, den Du per "BrowseForFolder" geholt hast, in einer
Datei und nicht in einer Variablen?

Da hast du recht, aber die Variable wird vorher in einer Ruotine erfasst, abgespeichert und erst später, irgendwann, wieder eingelesen. Ich hatte das nur als Hintergrud erwähnt, wegen der Gänsefüße oder nicht, denn dann haätte ich das dort ergänzen müssen.

Man kann es nicht oft genug sagen, danke für eure Unermüdlichkeit!
PS: Wie bekommt man so viel Fachwissen ... *Neid*

Gruß OKIDOKI
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

Batch & Shell
Batch: Word Datei kopieren und umbennen (9)

Frage von ExcelNoob177 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

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

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...