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

Anzahl Variablen erkennen und automatisch in Schleife verarbeiten

Frage Entwicklung Batch & Shell

Mitglied: crazyhoesl

crazyhoesl (Level 1) - Jetzt verbinden

18.10.2007, aktualisiert 21.11.2007, 3743 Aufrufe, 4 Kommentare

Hallo,

ich habe in meiner Batches oft folgenden Wunsch:

Um es gleich leichter verständlich zu machen verdeutliche ich mein Anliegen anhand eines Beispieles:

Ich bestimme z.B. folgende vier Variablen zu Beginn meiner Batch:

01.
set backupdir=%Systemdrive%\Backups 
02.
set progdir=%Systemdrive%\Progs 
03.
set docsdir=%Systemdrive%\User\Docs 
04.
set imgdir=%homepath%\Images
Im weiteren Verlauf möchte ich damit folgendes anstellen:

01.
xcopy /Y %backupdir%\*.* F:\ 
02.
xcopy /Y %progdir%\*.* F:\ 
03.
xcopy /Y %docsdir%\*.* F:\ 
04.
xcopy /Y %imgdir%\*.* F:\
Jetzt ist das erstens ziemlich viel schreibarbeit, und zweitens macht sich bei mir öfters der Wunsch breit, eine Variable hinzuzufügen, leider muss ich dann im weiteren Code auch einen XCOPY Befehl hinzufügen.

Ist das nicht irgendwie einfacher lösbar? Ich denke da an eine Schleife, die z.B. erkennt wieviele Variablen festgelegt wurden, und dann - in diesem Beispiel eben vier mal - durchläuft und bei jedem Durchlauf die nächste Variable verwendet. Somit benötige ich nur eine XCOPY Zeile, was nicht zuletzt der Übersichtlichkeit des Quellcodes dient.

Sollte das wirklich möglich sein, stehe ich vor einem weiterem Problem: Ich möchte natürlich mehr als nur vier Variablen definieren, aber nur vier für die Schleife verwenden müssen.

Bin für eure konstruktiven Vorschläge offen!

Euer
crazyhoesl
Mitglied: Biber
18.10.2007 um 23:59 Uhr
Moin crazyhoesl,

ich versteh das Problem nicht ganz... es steht dir doch frei, deine Variablen irgendwo als Verarbeitungsliste einer FOR-Anweisung zu verwenden.

Vielleicht hilft folgendes Beispiel am CMD-Prompt:
01.
(=23:52:29  D:\temp=) 
02.
>set "YED=Y:\Eigene Dateien" 
03.
 
04.
(=23:52:56  D:\temp=) 
05.
>set "dworkdir=D:\Work" 
06.
 
07.
(=23:53:04  D:\temp=) 
08.
>for  %i in ("%YED%" "%dworkdir%") do @echo xcopy "%~i\*.*" f:\archiv\ 
09.
xcopy "Y:\Eigene Dateien\*.*" f:\archiv\ 
10.
xcopy "D:\Work\*.*" f:\archiv\
Im Bereich "Batch und Shell" steht auch ein Tutorial aus der "Batch for Runaways"-Reihe, in dem beschrieben wird, wie bestimmte Variablen zu Debugzwecken "verfolgt", gesetzt, gelöscht.... na ja, halt selektiv auch in Schleifen verwendet werden können.
Schau mal in BatchTut I und II ("FindLongPath" und "Ein bisschen Handwerkszeugs").

Gruß
Biber
Bitte warten ..
Mitglied: bastla
19.10.2007 um 00:18 Uhr
... es steht dir doch frei, deine Variablen irgendwo als Verarbeitungsliste einer FOR-Anweisung zu verwenden.
... oder gleich ganz darauf zu verzichten (womit Du Ergänzungen nur an einer einzigen Stelle vornehmen müsstest):
01.
for %%i in ("%Systemdrive%\Backups" "%Systemdrive%\Progs" "%Systemdrive%\User\Docs" "%homepath%\Images") do echo xcopy /Y "%%~i\*.*" F:\
Anmerkungen: Das "echo" dient nur zu Demozwecken und ist im "Ernstfall" natürlich wegzulassen. Außerdem ist Biber's Variante für die Kommandozeile formuliert (%i) und meine Version für Batch (%%i) gedacht.
Eine weitere Möglichkeit wäre natürlich, die einzelnen Pfade (jeden in einer eigenen Zeile) in einer Textdatei zu hinterlegen und diese auszulesen:
01.
for /f "delims=" %%i in (D:\Pfadliste.txt) do echo xcopy /Y "%%~i\*.*" F:\
Grüße
bastla
Bitte warten ..
Mitglied: Biber
19.11.2007 um 09:41 Uhr
Moin kratzihoesl,
Bin für eure konstruktiven Vorschläge offen!
Heute vor einem einem Monat haben wir konstruktiv geantwortet.
Gibst Du mal konstruktives Feedback?

Danke
Biber
Bitte warten ..
Mitglied: Biber
21.11.2007 um 08:38 Uhr
Hm,

das werte ich mal Antwort und nehme es zum Anlass, diesen Beitrag zu schließen.

@kratzi: Bin aber natürlich per PN erreichbar, falls der Beitrag wieder geöffnet werden soll.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Automatisch entscheiden ob prozentual oder fest anzahl von Datensätze (7)

Frage von hugothemagpie zum Thema Microsoft Office ...

Exchange Server
Exchange 2010 Konto Maximale Odner Anzahl in Outlook begrenzen (4)

Frage von giesalv zum Thema Exchange Server ...

Windows Server
gelöst Client werden automatisch verschoben (11)

Frage von Gregor81 zum Thema Windows Server ...

Entwicklung
Seite automatisch wieder ausrichten mit css oder javascript? (2)

Frage von rababar2014 zum Thema Entwicklung ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte