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, 3313 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
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Server
NTFS Berechtigungen Ordnerstruktur
Frage von hukahu23489Windows Server11 Kommentare

Hallo, ich bin seit kurzem in einer neuen IT-Abteilung und bin über das Berechtigungskonzept des Unternehmens sehr schockiert. Ich ...