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
Kommentar vom Moderator Biber am 18.02.2010 um 19:27:14 Uhr
Verschoben von "Entwicklung" nach "Batch & Shell".
GELÖST

Problem mit for schleife - batch

Frage Entwicklung Batch & Shell

Mitglied: ForgottenRealm

ForgottenRealm (Level 1) - Jetzt verbinden

18.02.2010, aktualisiert 19:27 Uhr, 3442 Aufrufe, 5 Kommentare

Hallo


Ich wollte einige Scripte, welche erstellte Batchdateien automatisch verarbeiten (mit rar.exe packen und verschieben), mit einer for-schleife kürzen, allerdings funktioniert das einfach nicht.

Bisher schaut die Datei so aus (gekürzt)

@Title Archivierung
@echo OFF

@set NETWORKDRIVE=Z:
@set LOCALDRIVE=E:
@set WORKPATH=%NETWORKDRIVE%\Tasks\Clients\Automatische Sicherung
@if %COMPUTERNAME%==SERVER @set WORKPATH=%LOCALDRIVE%\Netzwerkablage\Tasks\Clients\Automatische Sicherung
@set /P VERSION=<"%WORKPATH%\Version.txt"
@set CLIENTLIST=Clients.txt
@set DELOPTIONS=/F /Q
@set RAROPTIONS=-Y -M5 -U A
@set ARCHIVFILE=%VERSION%.rar
REM -----------------------------------------------------------------------------------------------
@set CLIENT=abc
@set TARGET=%WORKPATH%\%CLIENT%\%ARCHIVFILE%

@Title %CLIENT%
CD %WORKPATH%\%CLIENT%
@del %DELOPTIONS% "%TARGET%"
@rar %RAROPTIONS% "%TARGET%" "%VERSION%"


Der Teil nach dem Trennstrich wiederholt sich etwa 350 mal, was die Batchdatei wahnsinnig unübersichtlich und unpraktisch macht.
In der Clients.txt habe ich jetzt alle ca 350 Clienten eingetragen, welche abgearbeitet werden sollen.

Das was ich mir bisher mit for gebastelt habe, funktioniert nicht, weil die for-schleife in jeder Anweisung bei der leerstelle in "Automatische Sicherung" aufhört, sobald diese mit der Variable %%L arbeiten soll, obwohl in dieser nur der Inhalt der Textdatei stehen sollte.

@for /F %%L IN ("%WORKPATH%\%CLIENTLIST%") DO (

@Title %%L
@set TARGET=%WORKPATH%\%%L\%ARCHIVFILE%
CD %WORKPATH%\%%L
@del %DELOPTIONS% "%TARGET%"
@rar %RAROPTIONS% "%TARGET%" "%VERSION%"
)

Wo liegt der Fehler?
Mitglied: Biber
18.02.2010 um 19:25 Uhr
Moin ForgottenRealm,

sinngemäß musst du bei der FOF/F-Anweisung mit "delims=" arbeiten (=keine Token-Trenner, nimm ganze Zeile) und die Laufvariable dann ggf. in Anführungszeichen setzen.

01.
... 
02.
FOR /F "delims=" %%L IN ("%WORKPATH%\%CLIENTLIST%") DO ( 
03.
 
04.
Title %%L 
05.
set "TARGET=%WORKPATH%\%%L\%ARCHIVFILE%" 
06.
CD "%WORKPATH%\%%L" 
07.
del %DELOPTIONS% "%TARGET%" 
08.
rar %RAROPTIONS% "%TARGET%" "%VERSION%" 
09.
10.
....
Grüße
Biber
Bitte warten ..
Mitglied: bastla
18.02.2010 um 19:29 Uhr
... und außerdem wird "%WORKPATH%\%CLIENTLIST%" (da unter Anführungszeichen stehend) als Text und nicht als Pfad zu einer Datei interpretiert - daher:
FOR /F "usebackq delims=" %%L IN ("%WORKPATH%\%CLIENTLIST%") DO (
Grüße
bastla
Bitte warten ..
Mitglied: ForgottenRealm
18.02.2010 um 19:36 Uhr
Hi

Funktioniert leider beides nicht.

Die Variable %%L wird nach wie vor nicht richtig aufgelöst
Bitte warten ..
Mitglied: bastla
18.02.2010 um 19:57 Uhr
Hallo ForgottenRealm!
Die Variable %%L wird nach wie vor nicht richtig aufgelöst
Wie äußert sich das?
Ohne "delayedExpansion" kann allerdings die Verwendung der Variablen %TARGET% in der Schleife nicht funktionieren - so sollte es aber klappen:
01.
FOR /F "usebackq delims=" %%L IN ("%WORKPATH%\%CLIENTLIST%") DO ( 
02.
    Title %%L  
03.
    CD "%WORKPATH%\%%L"  
04.
    del %DELOPTIONS% "%WORKPATH%\%%L\%ARCHIVFILE%"  
05.
    rar %RAROPTIONS% "%WORKPATH%\%%L\%ARCHIVFILE%" "%VERSION%" 
06.
)
Grüße
bastla
Bitte warten ..
Mitglied: ForgottenRealm
18.02.2010 um 20:20 Uhr
Im Moment schaut es so aus ...

Wenn ich CD "%WORKPATH%\%%L" verarbeiten lasse, so wird das Ziel nicht gefunden und der Text in der Fehlerausgabe endet bei Automatische"

Es scheint also ein Problem mit dem Leerzeichen zu geben.

Lasse ich mir jetzt aber "%WORKPATH%\%%L" mit echo ausgeben, so wird der Pfad korrekt angegeben.

Woran liegt das?

Weiterhin bin ich bei anderen Scripts darauf angewiesen, in der For-Schleife Variablen zu definieren, was aber leider nicht funktioniert.

Ich könnte natürlich auch mit;

@set CLIENTS=AA BB CC DD ...

for %%i in (%CLIENTS%) do (
set client=%clients%
cd "%clients%"
)

Arbeiten, allerdings wird die Variable dann wieder sehr lang und unübersichtlich ...
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
Verschachtelte For Schleife für Batch Neuling (3)

Frage von yperiu zum Thema Batch & Shell ...

Batch & Shell
gelöst Verlinkung erstellen Batch Datei mit for Schleife (2)

Frage von rusdav zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(5)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Windows 10
Windows 10 Home "Netzlaufwerk nicht bereit" (17)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
Exchange Postfach leeren - nicht löschen (10)

Frage von AndreasOC zum Thema Exchange Server ...