Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Strings aus Datei in Variablen einlesen, keine festen Zeilenpositionen

Frage Entwicklung Batch & Shell

Mitglied: meyerro

meyerro (Level 1) - Jetzt verbinden

20.04.2008, aktualisiert 21.04.2008, 3732 Aufrufe, 5 Kommentare

Eine ausgelesene Anzahl an Pfadnamen in eine Variable aufnehmen und anschließend per WinRAR abarbeiten

Halli Hallo,

irgendwie komme ich mit dem Thema nicht mehr ganz klar. Habe schon seit Jahren nichts mehr mit Batch-Dateien gemacht.

Folgendes Scenario:
Jeder Mitarbeiter bei uns hat auf seinem Home-Dir eine Datei liegen, in der er angibt, welche Pfade aus diesem speziell archiviert werden sollen. Ist für die jenigen, die kein Notebook bekommen, da sie es nur sehr selten benötigen. Die Datei hat dieses Format:

BackupLocations=2
BackupLocation1=d:\foo\bar
BackupLocation2=e:\foobar\unfug

Die Verzeichnisse werden dann jeweils per WinRAR archiviert und auf einen USB-Stick verfrachtet.

Alle meine Versuche schlugen bisher fehl. Ich vermute, dass ich von der Lösung relativ weit weg bin (der berühmte Holzweg).

Würde mich sehr über Eure Lösungen freuen.

MfG
Robert
Mitglied: bastla
20.04.2008 um 20:53 Uhr
Hallo meyerro und willkommen im Forum!

Da Du leider nicht so genau beschreibst, wie die ausgelesenen Pfade konkret verwendet werden sollen, nur ein allgemeines Beispiel:
01.
@echo off & setlocal 
02.
set "Back=H:\BackupLocations.txt" 
03.
for /f "usebackq skip=1 tokens=2 delims==" %%i in ("%Back%") do call :ProcessPath "%%i" 
04.
echo\ 
05.
echo Verarbeitung aller Verzeichnisse beendet. 
06.
goto :eof 
07.
 
08.
:ProcessPath 
09.
echo Verarbeite Verzeichnis %~1 ... 
10.
goto :eof
In das Unterprogramm ":ProcessPath" kannst Du die für die Verarbeitung eines einzelnen Verzeichnisses erforderlichen Befehle schreiben, wobei das Verzeichnis selbst als "%~1" angesprochen wird.

Die Anzahl der Verzeichnisse wird übrigens nicht ausgelesen (=übersprungen), da ohnehin alle folgenden Zeilen einzeln gelesen und verarbeitet werden.

Grüße
bastla
Bitte warten ..
Mitglied: meyerro
20.04.2008 um 21:09 Uhr
Mein Gott, bin ich weit weg gewesen. Viel zu kompliziert gedacht. Dein Batch ist ein Volltreffer. Danke
Bitte warten ..
Mitglied: Biber
21.04.2008 um 09:36 Uhr
Moin meyerro und bastla,

kleiner Änderungsvorschlag.
Die Mimik, die erste Zeile unbesehen zu überspringen und alle folgenden Zeilen als gewollte Backup-Pfade zu interpretieren bringt - ja, auch einem Batch- einige meiner Nackenhärchen zum Senkrechtstehen.

Es kann nach meinem schnipsel-ästhetischen Empfinden weder sein, dass
  • Kommentare oder Bedienanweisungen in einer *.ini-Datei so implizit unmöglich gemacht werden
  • oben in der Anzahl-Zeile stehen kann: "BackupLocations=2" und dennoch werden danach 27 BackupLocation-Pfad-Zeilen abgearbeitet statt 2.

Die Abhängigkeit von der BackupLocation-Anzahl-Zeile und den Pfad-Zeilen ließe sich sinngemäß so abbilden:
01.
:: ---snipp BackupLocaotions.bat 
02.
@FOR %%b in ("E:Work\BackupLocations.txt") do @if exist "%%~b" @( 
03.
  FOR /F "tokens=2 delims==" %%i in ('findstr /i /b "BackupLocations" "%%~b"') DO @( 
04.
    FOR /L %%j in (1,1, %%i) DO @( 
05.
      FOR /f "tokens=2 delims==" %%k in ('findstr /i /b "BackupLocation%%j" "%%~b"') DO @echo winrar...%%k 
06.
 )))
Dieser Batch würde abhängig von der zuerst ausgelesenen "BackupLocations=2"-Zeile die "Backuplocation1" und "BackupLocation2" -Angaben rausflöhen.
Auch wenn die Gesamt-Ini-Datei so aussieht:
01.
; BackupLocations.txt   
02.
## Wird bei der Archivierung der Notebook-MitarbeiterInnen-Dateien benutzt. 
03.
## Format: 
04.
## BackupLocations=n  --- gibt an, wieviele Pfade gesichert werden sollen 
05.
## BackupLocations=4 wird interpretiert als "Archiviere BackupLocation1...BackupLocation4 
06.
BackupLocations=2 
07.
BackupLocation1=d:\foo\bar 
08.
# Kommentar zu BackupLocation1= Projektpläne 
09.
BackupLocation2=e:\foobar\unfug 
10.
## ------- Ende der aktuell zu archivierenden Ordner 
11.
BackupLocation3=e:\foobar\optional 
12.
BackupLocation4=e:\nochleer
Grüße
Biber
Bitte warten ..
Mitglied: bastla
21.04.2008 um 14:19 Uhr
@Biber
Da muss ich Dir nun leider einmal mehr Recht geben: meinen obigen Kommentar hätte ich mir besser sparen sollen ...
Zu Deinem Entwurf noch eine Anmerkung: Wenn Du "findstr" jeweils ohne "/b" (bzw ohne "^" am Beginn des Suchbegriffes) verwendest, musst Du hoffen, dass die "BackupLocations.txt" nicht etwa so aussieht:
01.
; BackupLocations.txt   
02.
## Wird bei der Archivierung der Notebook-MitarbeiterInnen-Dateien benutzt. 
03.
BackupLocations=2 
04.
## Format: 
05.
## BackupLocations=n  --- gibt an, wieviele Pfade gesichert werden sollen 
06.
## BackupLocations=4 wird interpretiert als "Archiviere BackupLocation1...BackupLocation4 
07.
BackupLocation1=d:\foo\bar 
08.
# Kommentar zu BackupLocation1= Projektpläne 
09.
## BackupLocation2=e:\foobar\unfug 
10.
## ------- Ende der aktuell zu archivierenden Ordner 
11.
BackupLocation3=e:\foobar\optional 
12.
BackupLocation4=e:\nochleer
Grüße
bastla
Bitte warten ..
Mitglied: Biber
21.04.2008 um 14:45 Uhr
<lach> ...touche, bastla,

das kommt von meinem ständigen Nicht-Testen...

Ich füge mal (immer noch ungetestet, aber voller Vertrauen in Dein geschultes Auge) ein oder zwei "/b"s oben ein.

Danke und Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
C und C++
String einlesen in Array und wieder ausgeben von hinten (4)

Frage von Protected zum Thema C und C ...

Batch & Shell
gelöst Teil eines Strings als Variable setzen (2)

Frage von tHe-jAy zum Thema Batch & Shell ...

Batch & Shell
gelöst Schreiben eines Strings mit Leerzeichen in eine Datei (6)

Frage von c20082005 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(2)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (16)

Frage von Lynkon zum Thema TK-Netze & Geräte ...