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, 3427 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

Frage von .Sessl zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...