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
GELÖST

BATCH For Schleife mit führender Null?

Frage Entwicklung Batch & Shell

Mitglied: einfachBernd

einfachBernd (Level 1) - Jetzt verbinden

06.11.2012 um 08:51 Uhr, 6903 Aufrufe, 11 Kommentare

Hallo an alle

Bräuchte Hilfe bei einen Problem wo ich nicht weiterkomme.

for /l %a in (1,1,99999) do ( echo %a )

... %%a soll z.b. 00001 anzeigen
... %%a soll z.b. 91031 anzeigen

Wie richte ich das ein?

Danke
Mitglied: bastla
06.11.2012 um 09:38 Uhr
Hallo einfachBernd!

Lässt sich unmittelbar nicht lösen - in einem Batch entweder ein Unterprogramm oder "delayedExpansion" verwenden, etwa:
01.
setlocal enabledelayedexpansion 
02.
for /l %%a in (100001,1,199999) do set "Zahl=%%a" & echo !Zahl:~-5!
Grüße
bastla
Bitte warten ..
Mitglied: einfachBernd
06.11.2012 um 09:45 Uhr
Hi bastla

Danke für die schnelle Lösung

01.
 setlocal enabledelayedexpansion 
hat mal wieder gefehlt ;)
Bitte warten ..
Mitglied: einfachBernd
14.11.2012 um 10:19 Uhr
OK nun habe ich zu dem Thema doch ein Problem bei einem BATCH

01.
echo off 
02.
cls 
03.
 
04.
rem SystemSettings 
05.
setlocal enabledelayedexpansion  
06.
set name=ATL 
07.
 
08.
for /l %%a in (1,1,99999) do (  
09.
 set Zahl=%%a 
10.
 ping -n 1 -w 1 %name%!Zahl:~-5! >nul 2>nul 
11.
 if not errorlevel 1 ( echo OK  - %name%!Zahl:~-5! 
12.
                       echo %name%!Zahl:~-5!>> "%~dp0ONLINE.txt") else ( echo XXX - %name%!Zahl:~-5! ) 
13.
14.
 
15.
pause
es sollte so sein, dass der Ping bei ATL00001 startet stattdessen kommt aber der Ping auf ATL1

was mache ich falsch?

Danke für Info
Bitte warten ..
Mitglied: degNLB
14.11.2012, aktualisiert um 10:30 Uhr
Zeile 8 hast du in der Klammer (1,1,99999) zu stehen, anstatt die Lösung von Bastla "(100001,1,199999)"
Bitte warten ..
Mitglied: einfachBernd
14.11.2012 um 10:32 Uhr
Hi degNLB des is aber keine Lösung denn dann hast ja die 5Stellen von Start weg schon ;)

ich möchts von 1 = 00001 weg haben und nicht von 10001 ;)

LG Berni
Bitte warten ..
Mitglied: degNLB
14.11.2012 um 10:37 Uhr
aber wenn ich mich jetzt nicht irre, dann sind 100001 und 199999 sechsstellig und die Option bzw. der Befehl "!Zahl:~-5!" gibt nur die letzten 5 Stellen aus, d.h. unterm Strich sollte er so von 00001 anfangen zu Zählen
Bitte warten ..
Mitglied: einfachBernd
14.11.2012 um 10:42 Uhr
ok das schon, aber das ist für mich keine saubere Lösung.

Muss sauber auch gehen ;)
Bitte warten ..
Mitglied: degNLB
14.11.2012 um 10:47 Uhr
aber bei Fragen zu Batch kannst du dem bastla ruhig glauben und vertrauen... er hat Ahnung davon ;)

Und mit Batch lassen sich gewisse Dinge gut und einfach erledigen, aber jede Programmiersprache hat so ihre schwächen, also müsstest du in Powershell, dem großen Bruder, mal nachsehen, ob es dort eine bessere Lösung gibt.
... oder dir eine andere Programmiersprache anlesen, wenn du nicht damit Leben willst :P
Bitte warten ..
Mitglied: bastla
14.11.2012, aktualisiert um 12:10 Uhr
Hallo degNLB!

Danke für Dein Vertrauen
@ einfachBernd
das ist für mich keine saubere Lösung.
Ich kenne ja Deine Definition von "sauber" nicht - aber wenn Dir sowas lieber wäre
01.
for /l %%a in (0,1,9) do ( 
02.
    for /L %%b in (0,1,9) do ( 
03.
        for /l %%c in (0,1,9) do ( 
04.
            for /l %%d in (0,1,9) do ( 
05.
                for /l %%e in (0,1,9) do ( 
06.
                    if "%%a%%b%%c%%d%%e" neq "00000" ( 
07.
                        echo %%a%%b%%c%%d%%e 
08.
09.
10.
11.
12.
13.
)
dann nur zu ...

Grüße
bastla
Bitte warten ..
Mitglied: einfachBernd
14.11.2012 um 12:45 Uhr
hi bastla,

war kein angriff gegen dich, nur ich weiß ich hab das schon mal gelöst eben auch mit variable in forschleife mit ! aber mir fehlt ein kontext ;)

der obere code erfüllt seinen zweck ;)
Bitte warten ..
Mitglied: bastla
14.11.2012 um 15:11 Uhr
Hallo einfachBern!

So empfindlich bin ich ja nicht, und die Schleifenvariante war ja auch nicht wirklich ernst gemeint ...

Was Du schon mal gemacht haben könntest, wäre vielleicht
01.
for /l %%a in (1,1,99999) do ( 
02.
    set Zahl=0000%%a 
03.
    echo !%Zahl:~-5! 
04.
)
- eine echte "Zahl" (wäre mit "set /a" zuzuweisen) produzierst Du aber auch in dieser Version nicht ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Schleife als FOR-SCHLEIFE (2)

Frage von mp2711 zum Thema Batch & Shell ...

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

Frage von Juergen42 zum Thema Batch & Shell ...

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

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

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...