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

Aus einer FOR-Schleife die Variable benutzen anpassen und weiterverwenden...

Mitglied: chlages

chlages (Level 1) - Jetzt verbinden

19.03.2008, aktualisiert 20.03.2008, 3320 Aufrufe, 6 Kommentare

Hallo zusammen,

ich bastel jetzt schon mehrere Stunden an dem Problem herum und komme nicht weiter. Ich hoffe ihr könnt mir helfen:

Ich möchte den Zählerwert der FOR-Schleife auslesen und als neuen Dateinamen verweden. Der Rückgabewert aus der Verzeichnis-Datei lautet "911023". Ich benötige aber für den zukünftigen Dateinamen nur die "102" aus der obigen Nummer.

Ich hoffe ihr könnt mir helfen...


REM * Variablen werden gesetzt *
REM
set DAT_ART=???.art_20080315*
set DAT_TRE=???.tre_20080315*
set DATEI=Verzeichnisse.txt
set QUELLE=U:\Filialen
set ZIEL=D:\TEST


REM * Kopiervorgang *
REM *
for /F "delims=" %%I in (%DATEI%) do (
set KURZ=%%I
type %QUELLE%\%%I\Backup\%DAT_ART% > %ZIEL%\%%I\im_export\%KURZ%.art
type %QUELLE%\%%I\Backup\%DAT_TRE% > %ZIEL%\%%I\im_export\%KURZ%.tre
)
Mitglied: bastla
19.03.2008 um 22:43 Uhr
Hallo chlages und willkommen im Forum!

Das Schlüsselwort für das Problem / die Lösung lautet "delayedexpansion". Die geänderte Batchdatei sähe damit (ungetestet) so aus:
01.
@echo off & setlocal enabledelayedexpansion 
02.
REM * Variablen werden gesetzt * 
03.
REM 
04.
set DAT_ART=???.art_20080315* 
05.
set DAT_TRE=???.tre_20080315* 
06.
set DATEI=Verzeichnisse.txt 
07.
set QUELLE=U:\Filialen 
08.
set ZIEL=D:\TEST 
09.
 
10.
 
11.
REM * Kopiervorgang * 
12.
REM * 
13.
for /F "delims=" %%I in (%DATEI%) do ( 
14.
    set "KURZ=%%I" 
15.
    type %QUELLE%\%%I\Backup\%DAT_ART% > %ZIEL%\%%I\im_export\!KURZ:~2,3!.art 
16.
    type %QUELLE%\%%I\Backup\%DAT_TRE% > %ZIEL%\%%I\im_export\!KURZ:~2,3!.tre 
17.
)
Damit die Variable KURZ innerhalb der Schleife ausgewertet werden kann, muss "delayedexpansion" eingeschaltet ("enable"d) und die Variablenschreibweise von %KURZ% auf !KURZ! abgeändert werden. Da nur die 3 Stellen nach Position 2 benötigt werden, muss der entsprechende Teilstring gebildet werden (siehe dazu auch "set /?").

Eine Alternative wäre die Verwendung eines Unterprogrammes:
01.
@echo off & setlocal 
02.
REM * Variablen werden gesetzt * 
03.
REM 
04.
set DAT_ART=???.art_20080315* 
05.
set DAT_TRE=???.tre_20080315* 
06.
set DATEI=Verzeichnisse.txt 
07.
set QUELLE=U:\Filialen 
08.
set ZIEL=D:\TEST 
09.
 
10.
 
11.
REM * Kopiervorgang * 
12.
REM * 
13.
for /F "delims=" %%I in (%DATEI%) do call :ProcessFile "%%I" 
14.
goto :eof 
15.
 
16.
:ProcessFile 
17.
set "KURZ=%~1" 
18.
type %QUELLE%\%~1\Backup\%DAT_ART% > %ZIEL%\%~1\im_export\%KURZ:~2,3%.art 
19.
type %QUELLE%\%~1\Backup\%DAT_TRE% > %ZIEL%\%~1\im_export\%KURZ:~2,3%.tre 
20.
goto :eof
Grüße
bastla

[Edit] Biber-Bug vorweggenommen und dann auch noch als Zweiter korrigiert ("%%I" in den beiden "type"-Zeilen der zweiten Variante durch "%~1" ersetzt) [/Edit]
Bitte warten ..
Mitglied: Biber
19.03.2008 um 22:46 Uhr
Moin chlages,

willkommen im Forum.

Eine Möglichkeit zur Lösung wäre das Aktivieren der "verzögerten Variablenauflösung", einer Option, die Dir ermöglicht, eine Variable innerhalb einer CMD-Anweisung zu setzen und zu verwenden.

01.
 @echo off & setlocal enableDelayedExpansion 
02.
REM * Variablen werden gesetzt * 
03.
REM 
04.
set DAT_ART=???.art_20080315* 
05.
set DAT_TRE=???.tre_20080315* 
06.
set DATEI=Verzeichnisse.txt 
07.
set QUELLE=U:\Filialen 
08.
set ZIEL=D:\TEST 
09.
 
10.
 
11.
REM * Kopiervorgang * 
12.
REM * 
13.
for /F "delims=" %%I in (%DATEI%) do ( 
14.
set LangVar=%%I 
15.
set KURZ=!LangVar:~2,3! 
16.
type %QUELLE%\%%I\Backup\%DAT_ART% > %ZIEL%\%%I\im_export\!KURZ!.art 
17.
type %QUELLE%\%%I\Backup\%DAT_TRE% > %ZIEL%\%%I\im_export\!KURZ!.tre 
18.
)
Andere Variante ohne DelayedExpansion mit Call:Sub wäre so:
01.
@echo off & setlocal 
02.
REM * Variablen werden gesetzt * 
03.
REM 
04.
set DAT_ART=???.art_20080315* 
05.
set DAT_TRE=???.tre_20080315* 
06.
set DATEI=Verzeichnisse.txt 
07.
set QUELLE=U:\Filialen 
08.
set ZIEL=D:\TEST 
09.
 
10.
 
11.
REM * Kopiervorgang * 
12.
REM * 
13.
for /F "delims=" %%I in (%DATEI%) do set "LangVar=%%I" & call:ForEachLine %%I 
14.
goto :eof 
15.
 
16.
:ForEachLine Als Parameter1 wird die Laufvariable %%I übergeben 
17.
set KURZ=%LangVar:~2,3% 
18.
type %QUELLE%\%1\Backup\%DAT_ART% > %ZIEL%\%1\im_export\%KURZ%.art 
19.
type %QUELLE%\%1\Backup\%DAT_TRE% > %ZIEL%\%1\im_export\%KURZ%.tre 
20.
goto :eof
[beides ungetestet]

Grüße
Biber
[Edit]@bastla: Nächstes Mal schreibt jeder von uns eine der beiden Varianten...*gg [/Edit]
[Edit2] Übergabe von %%I an Call:Block ergänzt. Vor bastla. Der hat den gleichen Bug... [/Edit2]
Bitte warten ..
Mitglied: bastla
19.03.2008 um 22:53 Uhr
@Biber

Bis wir das ausgeknobelt haben, sind wir mit beiden Varianten auch schon fertig ...

Grüße
bastla
Bitte warten ..
Mitglied: chlages
20.03.2008 um 09:29 Uhr
Vielen Dank für die schnelle Hilfe !

Habe jetzt die beiden Varianten, ohne die Sprünge aus der Schleife, ausprobiert und habe immer noch das Problem mit der "KURZ" Variable. Irgendwie ist bleibt mein System davon unbeeindruckt.

Wenn ich mir den Wert per "Echo" ausgebe wird er wie gewünscht angezeigt. Aber nachher im "Type" Befehl wird nur die Bezeichnung und nicht der Wert angezeigt.

Christian
Bitte warten ..
Mitglied: chlages
20.03.2008 um 13:52 Uhr
Hallo nochmal,

habe jetzt das Problem gefunden

Ich habe die Endung ".bat" für mein Skript benutzt. Nachdem ich die Endung in ".CMD" geändert habe läüft es jetzt vom feinsten....

Trotzdem vielen Dank für Eure schnelle Hilfe.

Christian
Bitte warten ..
Mitglied: miniversum
20.03.2008 um 16:44 Uhr
Ich habe die Endung ".bat" für mein Skript benutzt. Nachdem ich die Endung in ".CMD" geändert habe läüft es jetzt vom feinsten....

Was??? *Kopfkratz*
Und ich dachte immer das wäre egal?
Wird ja beides vom CMD verarbeitet.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Geschachtelte For Schleife Variable weiter benutzen

gelöst Frage von seb1212Batch & Shell4 Kommentare

Hallo zusammen, ich habe ein kleines Problem, im untenstehenden Code hat die Variable %Datum% in Zeile 13 leider keinen ...

Batch & Shell

Weitergabe von Variablen in for-Schleifen

Frage von MFJustBatch & Shell1 Kommentar

Hallo, Ich versuche HTML Dateien in PDFs umzuwandeln (dies funktioniert) und diese dabei nach Teilen dieser HTML Datei umzubenennen ...

Batch & Shell

Batch Variablen in for-Schleife

gelöst Frage von Dacki1107Batch & Shell2 Kommentare

Hallo Liebe Administratoren Ich kämpfe mit einem kleinen Problemchen und hoffe das Ihr mir helfen könnt. Ich versuche eine ...

Batch & Shell

For schleife mit variablem inhalt

gelöst Frage von Tealk144Batch & Shell5 Kommentare

Hallo zusammen, kann ich in einer Batch Datei folgendes schreiben? for Variable in Satz do ( if exist %buchstabe%: ...

Neue Wissensbeiträge
Multimedia & Zubehör
AVM Fritz USB WLAN Sticks schneller einschalten
Tipp von NetzwerkDude vor 1 TagMultimedia & Zubehör

Die AVM Fritz WLAN Sticks haben in der Firmware 2 Modis: Einmal als Massenspeicher und einmal als WLAN Netzwerkkarte ...

Windows Server

Windows Server Backup schlögt Fehl -Lösung 2008-2016

Tipp von BiGnoob vor 1 TagWindows Server

Hi zusammen , ich möchte gerne einen Lösungstipp abgeben für folgenden fehler: lösung ist folgende:

Humor (lol)
Telekom vs. O2 - 3:2
Erfahrungsbericht von the-buccaneer vor 1 TagHumor (lol)4 Kommentare

Unglaublich aber wahr: Nachdem mein privater Anschluss am 19.04.18 auf VOIP und VDSL umgestellt wurde, hatte ich seitdem 1,5 ...

Batch & Shell

Windows 10 Heimnetzgruppe abgeschaft. Ein Script für einfache Netzwerk - Freigabe im Heimnetzwerk

Anleitung von treehe vor 1 TagBatch & Shell3 Kommentare

Anleitung für eine einfache Netzwerkfreigabe unter Windows 10 Wie weiter hab mal ein kleines CMD - Script gebastelt. Womit ...

Heiß diskutierte Inhalte
Netzwerke
IP-Adresse am zweiten Domänencontroller fest vergeben - Server verschwunden
gelöst Frage von DanielG1974Netzwerke29 Kommentare

Ich hab ein Problem, was ich bisher noch nicht erlebt habe Ich habe erfolgreich einen zweiten Server mit ActiveDirectory ...

Windows Tools
Virtueller Drucker gesucht (Schnittstelle: USB oder Seriell)
gelöst Frage von chrisButterflyWindows Tools21 Kommentare

Hi, ich suche einen virtuellen Drucker, den ich über eine USB oder serieller Schnittstelle ansprechen kann. Dieser Drucker soll ...

Windows Server
Windows Server 2012 - Update - Beim Booten bleibt der Server beim Windows Zeichen stehen
Frage von KeilbachWindows Server17 Kommentare

Hallo Zusammen, ich grüße euch, mein Name ist Michele. Ich bin hier ganz Neu - da ich einfach nicht ...

Windows 10
Weiße Fenster beim Aufruf verschiedener Apps
Frage von 90584Windows 1011 Kommentare

Hallo liebe Leute ! Ich habe ein Problem. Bei verschiedensten Anwendungen, wie z.B. beim Anhang, sind nur unlesbare weiße ...