Top-Themen

Aktuelle Themen (A bis Z)

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

Batch - beim Aus- bzw. Einlesen von Pfadangaben aus einer ext. Datei macht der Unterstrich im Pfadnamen Probleme!?

Frage Entwicklung Batch & Shell

Mitglied: klarname

klarname (Level 1) - Jetzt verbinden

14.08.2011, aktualisiert 15.08.2011, 2650 Aufrufe, 6 Kommentare

alter Newbie, halbwegs fit in PHP, freut sich über Antworten ... und die Qualität dieses Forums hier ...

Ich schreibe ein Batch-Backup-Programm (danke, ich weiß, es gibt robocopy ... aber ich will es selbst lernen), bei der in einer ext. txt-Datei div. Variablen (Email, Zielpfad, zu sichernde Ordner) etc. drin stehen.
Einer dieser zu sichernden Ordner "heißt" (z.B.):
D.\Dokumente und Einstellungen\AsusUpdate_V4512
Bei dem Versuch mit XCOPY werden zwar alle Dateien aus o.g. Pfad/Ordner sauber kopiert, der Ordner selbst aber ("AsusUpdate_V4512") wird jetzt im Zielverzeichnis zu "V4512" verstümmelt. Ich vermute, es liegt am Unterstrich!?
Und das verstehe ich nicht, da ich den Ordner in meinem Batch mit " " als String verarbeite!?
Wo ist mein Denkfehler?

01.
@echo off & setlocal enabledelayedexpansion 
02.
rem hier kommen div. Abfragen etc ... die haben mit meinem Problem aber nix zu tun  
03.
 
04.
rem ab Zeile 32 in der "einstellungen.txt" stehen untereinander,  ohne Anführungszeichen und ohne Backslash am Ende, die zu sichernden Ordner. 
05.
 
06.
for /f "tokens=* delims= skip=32" %%e in (einstellungen.txt) do ( 
07.
 
08.
rem %ZIEL% ist ebenfalls in einstellungen.txt festgelegt und wird weiter oben ausgelesen 
09.
 
10.
XCOPY "%%e" "%ZIEL%" /D /E /Y /I /H /R >%temp%\log.log 
11.
 
12.
rem hier kommt dann noch das errolevel-handling usw ... erstaunlicherweise wird hier mit %%e der "richtige" und vollständige Ordner bzw. Pfad ausgegeben 
13.
)
Mitglied: bastla
14.08.2011 um 19:22 Uhr
Hallo klarname und willkommen im Forum!

Da der Ordnername ja am Ziel nicht stimmt, wäre es schon relevant, die Zuweisung an die Variable %ZIEL% auch darzustellen (und das am besten mit passender Formatierung) ...
Die Schleife würde ich übrigens eher so schreiben:
for /f "skip=32 delims=" %%e in (einstellungen.txt) do (
und die "xcopy"-Schalter lassen sich auch am Stück angeben:
XCOPY "%%e" "%ZIEL%" /DEYKIHR >%temp%\log.log
Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
15.08.2011 um 08:16 Uhr
Aloha, ...

Suche nicht unbedingt eine Lösung

... wir dafür aber immer noch eine Begrüßung, einen Gruß und T-Mos oftmals angesprochene Ross & Reiter, die sich, wie bastla bereits genannt hat, in der Ausgabe von z.B. %Ziel% wiederfinden können ...

greetz André

langsam aber sicher müssen die Leute doch einmal lernen, wie man grüßt und dass es eine in rot-dargestellte Formatierungshilfe gibt *grml*

P.S.: Arbeite er wirklich mit D.\Dokumente und Einstellungen\AsusUpdate_V4512? Ich, als Windows-Betriebssystem, würde jetzt einen Ordner D. im aktuellen Verzeichnis suchen - aber ich nehme an, es ist nur ein Typo auf die man aber gerade in Sachen Batch & Co. akribisch achten sollte
P.P.S.: Um das nachvollziehen zu können, habe ich den Kopiervorgang einfach mal nachgestellt und das Resultat: Es wird kein Ordner angelegt, sondern nur die Dateien aus dem Ordner %%e ins %Ziel% kopiert, nur mit %Ziel%\%%~ne wird da bei mir ein Verzeichnis angelegt
Bitte warten ..
Mitglied: klarname
15.08.2011 um 08:52 Uhr
Korrektur:
der Ordner der kopiert werden soll ist
01.
D:\Dokumente und Einstellungen\pbid\Eigene Dateien\AsusUpdt_V71401
und "ankommen" tut in D:\BACKUP ein Ordner "namens"
01.
V7.14.01
Sieht irgendwie wie ne Datumsformatierung aus, oder?

Hast Recht André ... besser so?
Und: Dein "Verdacht" mit D. ist nicht unbegründet; passiert schliesslich oft genug ... trifft aber hier zum Glück nicht zu. War/ist tatsächlich nur ne Typo ...

Die Codezeile
01.
for /f "skip=32 tokens=* delims= " %%e in (einstellungen.txt) do (
in
01.
for /f "skip=32 delims=" %%e in (einstellungen.txt) do (
zu ändern, also auf die (unbegrenzten) *-tokens zu verzichten, führt dazu, dass gar nix mehr kopiert wird!!?
Aber, dass die Schalter auch zusammengefasst werden können,
01.
/DEYKIHR
statt
01.
/D /E /Y /K /I /H /R
war mir neu ... und schon wieder was gelernt!

Aber ansonsten, ja, ohne zu sagen/zeigen, wo und wie ich mein %ZIEL% hole, ist kaum ne Fehlersuche möglich. Sorry!
01.
For /F "tokens=* delims= skip=9" %%a IN (einstellungen.txt) DO echo %%a>>ziel.txt 
02.
set /p ZIEL=<ziel.txt 
03.
del ziel.txt
und in der einstellungen.txt steht (in Zeile 10) einsam und verzweifelt:
01.
g:\BACKUP
Hab auch schon versucht, die Angabe dort als String (" ") zu hinterlegen und bei XCOPY dann ohne " " zu verarbeiten ... führt aber zum gleichen seltsamen Ergebnis ...
Bitte warten ..
Mitglied: Skyemugen
15.08.2011 um 09:02 Uhr
Aloha,

also wie oben im P.P.S. angemerkt, wird rein mit %Ziel% bei mir gar kein Verzeichnis angelegt, sondern die Dateien ins %Ziel%-Verzeichnis kopiert.
for /f "skip=32 delims=" funktioniert einwandfrei ... und deine Zielsetzung lässt sich auch optimaler setzen ohne überflüssige Datei:
for /f "tokens=1* delims=:" %%s in ('findstr /n "^" "einstellungen.txt"^|findstr /B "10:"') do set "Ziel=%%t"
greetz André

P.S.: Welches OS?

edit: Zielsetzung als Code

P.P.S.: Hm, auch mit der neuen Zahl, tritt dieses Phänomen bei mir (XP x86) nicht auf, allerdings funktioniert bei mir auch bastlas for-Anweisung einwandfrei
Bitte warten ..
Mitglied: klarname
15.08.2011 um 09:12 Uhr
Stimmt! So hatte ich es erwartet und so sollte es sein, dass kein Verzeichnis angelegt wird, sondern alle Dateien aus dem Ursprungsordner D:\Dokumente und Einstellungen\pbid\Eigene Dateien\AsusUpdt_V71401 in den Zielordner G:\BACKUP kopiert werden ... aber: da wird tatsächlich ein Ordner namens V7.14.01 angelegt und darin brav und ordentlich (aber nicht gewollt) die Dateien aus genanntem Ordner reinkopiert.
Ein zweiter Ursprungsordner (D:\Dokumente und Einstellungen\pbid\Cookies) wird dagegen wie gewünscht kopiert, d.h. nur die Dateien aus Cookies ...
Zum OS: WinXP 32
Bitte warten ..
Mitglied: bastla
15.08.2011 um 11:50 Uhr
Hallo klarname!

Vorweg: Ebenfalls unter XP getestet tut bei mir ein
xcopy "D:\Dokumente und Einstellungen\pbid\Eigene Dateien\AsusUpdt_V71401" "G:\Backup" /dehikry
genau, was es soll - daher wäre es sinnvoll, per "echo on" in der ersten Zeile einmal nachzusehen, wie dieser Befehl (mit aufgelösten Variablen) bei Dir aussieht (dazu natürlich den Batch aus der CMD-Shell starten) ...
Zu
auf die (unbegrenzten) *-tokens zu verzichten, führt dazu, dass gar nix mehr kopiert wird!!?
"tokens=*" wird nicht benötigt, wenn durch "delims=" festgelegt wurde, dass keine Zerlegung erfolgen soll (kein Trennzeichen > keine Teile).
Generell würde ich die "einstellungen.txt" (am Beispiel Deiner Zeile 10) eher so aufbauen:
Ziel=G:\Backup
dann kannst Du nämlich vorweg mit einer einfachen Schleife
for /f "delims=" %%i in (einstellungen.txt) do set "%%i"
alle benötigten Werte gleich in Variablen schreiben lassen, wobei es zusätzlich sinnvoll sein könnte, die Variablennamen mit einem einheitlichen Präfix zu versehen, also zB "%Bck_Ziel%" anstelle von "%Ziel%" zu verwenden, da sich diese dann leichter am Stück bearbeiten lassen (um sie zB mit
set Bck_>einstellungen_neu.txt
in eine neue "Einstellungsdatei" zu übertragen).

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch: Pfadangabe in Datei ändern
gelöst Frage von NephrisBatch & Shell6 Kommentare

Ich musste mich bislang nur sehr rudimentär mit batch beschäftigen. Nun komme gelange ich deutlich an meine Grenze, und ...

Batch & Shell
Batch - Datei aus Ordner einlesen mit Ausnahmen!
gelöst Frage von DaedrafactionBatch & Shell4 Kommentare

Hallo! Ich bin halb am verzweifeln Ich möchte bestimmte Datei aus einem Ordner auslesen und in eine Datei speichern. ...

Batch & Shell
Batch: Aktuellen Verzeichnisnamen einer Pfadangabe auslesen
gelöst Frage von c20082005Batch & Shell4 Kommentare

Hallo, ich bekomme folgendes (ich vermute simples) Problem nicht gelöst: Ich habe eine Pfadangabe in einer Variablen, z.B.: "c:\a\b\c\d", ...

Batch & Shell
Zeilen aus Datei auf einem Netzwerkspeicher einlesen und NUMMERIERT auflisten in BATCH
gelöst Frage von Fabian-HaasBatch & Shell10 Kommentare

Hallo, Ich möchte mithilfe einer Batchdatei verschiedene Netzwerkfreigaben eines Benutzers nummeriert auflisten. Diese sind in einer Datei auf dem ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...