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

Kopieren von Dateien mit Leerzeichen aus Dateiliste

Frage Entwicklung Batch & Shell

Mitglied: onlinebroker

onlinebroker (Level 1) - Jetzt verbinden

12.06.2007, aktualisiert 23.03.2008, 7053 Aufrufe, 7 Kommentare

Hallo!

Ich habe ein Batch geschrieben mit dem ich Datensätze von einem Rechner auf ein Netzlaufwerk kopieren möchte um diese in einem Archivsystem zu speichern.
Es werden zunächst Dateien versch. Unterverzeichnisse mit der Erweiterung .xyz in eine Datei gespeichert. Diese Dateien können auch Leerzeichen enthalten und dienen als Basis für die spätere Kopieroperation, bei der Dateien mit der Endung .xyz und mit gleichem Namen aber verschiedener Dateierweiterungen kopiert werden.
Mit folgendem Befehl wurde bisher probiert den Kopiervorgang durchzuführen. Wobei die Datei tmp_file mit dem Befehl forfiles(Speicherung inkl. Anführungszeichen) befüllt wurde.
for /F %%i in (%tmp_file%) do xcopy %src_dir%%%~pni.* %save_dir%\ /D /V /F /Y >> %log_file% 2>>&1
Habe schon versucht ausschließlich eine der Dateien mit dem Befehl xcopy zu kopieren, mit Erfolg. Auch die Datei mit dem dir-Befehl aufzubauen und im oben aufgeführten Befehl die Quelldatei mit der Endung .xyz in Anführungszeichen zu kopieren führte nicht zum Erfolg.
Fragestellung:
1. Beim Kopieren der Dateien mit Leerzeichen im Namen wird die Datei bzw. der Pfad beim Leerzeichen abgeschnitten. Wie muss die for-Schleife verändert werden bzw. was gäbe es für weitere Möglichkeiten.
2. Abgesehen von den Dateien mit Leerzeichen werden bestimmte Dateien nicht kopiert, obwohl in der Logfile vermerkt ist, dass diese kopiert wurden.

Bsp. %tmp_file%:
"\Pfad\12345.xyz"
"\Pfad\12 345.xyz"
"\Pfad\123 45.xyz"

Für Hilfe bzw. Ideen bin ich dankbar.

MfG
Mitglied: miniversum
12.06.2007 um 09:15 Uhr
Die Dateinamen werden Abgeschnitten, weil du die delims nicht gesetzt hast. Dadurch wird per Default das Leerzeichen als Trennzeichen benutzt. Willst du also in deiner For-Schleife Listen auslesen die Leerzeichen enthalten must du die delims imemr aus nichts setzen.
Des Weiteren werden durch das verwenden des ~ in %%~pni.* die ", die zwar in der Datei stehen, mit abgeschnitten. Dies mußt du auch wieder ausgleichen. So ergibt sich dann folgendes:

for /F "delims=" %%i in (%tmp_file%) do xcopy "%src_dir%%%~pni.*" "%save_dir%\" /D /V /F /Y >> %log_file% 2>>&1

miniversum
Bitte warten ..
Mitglied: Biber
17.06.2007 um 00:42 Uhr
Moin onlnebroker,

Für Hilfe bzw. Ideen bin ich dankbar.
Und ich immer für eine Rückmeldung...
Ist das Problem durch miniversums Antwort gelöst worden?

Grüße
Biber
Bitte warten ..
Mitglied: onlinebroker
18.06.2007 um 07:43 Uhr
Mogähn,

die Lösung von miniversum hat wunderbar funktioniert.
Dank an miniversum für die schnelle Hilfe.

Gruß

onlinebroker
Bitte warten ..
Mitglied: wowka86
23.03.2008 um 01:11 Uhr
abend...

nur ne frage zum verständniss...

wo kriege ich das "src_dir" her?? muss das nicht, so wie ich es verstanden habe, aus einet temporären datei kommen?
Bitte warten ..
Mitglied: miniversum
23.03.2008 um 10:51 Uhr
Die gepostete Zeile umdie es hier ging ist nur ein teil einer Batch.
Die Variable %src_dir% muß vorher difiniert werden. Ob die aus einer Datei kommt oder einfach so zuvor über einen set Befehl festgelegt wurde ist egal.
Das gleiche gilt auch für %tmp_file%, %save_dir% und %log_file%
Bitte warten ..
Mitglied: wowka86
23.03.2008 um 14:25 Uhr
ach so ok
danke schön

aber eine frage hätte ich doch noch und zwar wenn die adresse und der Dateiname schon in der liste vorhanden sind, wie kann ich die zum kopieren auslesen?
also damit die batch die datei mit dem namen, der in der liste steht, auf zb eine andere festplatte kopiert.
Bitte warten ..
Mitglied: miniversum
23.03.2008 um 19:09 Uhr
Das pasiert mit den For Befehl.
for /F "delims=" %%i in (Datei.txt) do echo %%i
würde die datei "Datei.txt" auslesen und den Inhalt zeilenweise ausgeben. Dabei steht in dem Fall in der Variablen %%i jeweils eine Zeile in der Datei.
Stehen also Dateinamen drin werden diese ausgelesen.
Genaueres zum For Befehl (oder andern) indem du in der Eingabeaufforderung
for /?
eingibst.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Einzelne Dateien in Dateiliste umbenennen durch neuen Wert (Namen) aus einer Zelle (2)

Frage von two-ak-two zum Thema VB for Applications ...

C und C++
Dateien in Ordner kopieren anhand vom Teil eines Dateinamen (22)

Frage von onlyforu8373 zum Thema C und C ...

Batch & Shell
Dateien kopieren die nicht mehr verändert werden? (10)

Frage von pbelcl zum Thema Batch & Shell ...

Windows Server
gelöst Administrator kann auf Server keine EXE-Dateien kopieren, löschen, anlegen (5)

Frage von Winfried-HH zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...