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

Mit For-Schleife ordner von z.b 01 bis 15 erstellen lassen

Frage Entwicklung Batch & Shell

Mitglied: 45753

45753 (Level 1)

11.04.2007, aktualisiert 16.04.2007, 8292 Aufrufe, 8 Kommentare

Hallo nochmal,

bastla meinte ich könnte mehrere Beiträge hintereinander erstellen... also tu ich das jetzt mal...

Ich habe das Problem, dass wenn ich ordner von z.b. 1 bis 15 mit der For-Schleife erstellen möchte kein 0 vor der 1 erzeugen kann. Es werden also Ordner 1, 2, 3, ... erstellt aber nicht 01, 02, 03, ... gibt es dafür eine Lösung?

FOR /L %%i in (1,1,15) do mkdir "%%i"
FOR /L %%i in (01,1,15) DO mkdir "%%i" <= erzeugt kein 0 vor der 1

Gruss,

wobleibtdiezeit
Mitglied: Rockfire
11.04.2007 um 13:32 Uhr
Probiermal:

for /L %i in (101,1,115) do set i=%i& set x=!i:~-2! &md !x!

Gruß

Andreas
Bitte warten ..
Mitglied: miniversum
11.04.2007 um 13:37 Uhr
So sollte es gehen:
setlocal enabledelayedexpansion
FOR /L %%i in (1,1,15) do set /a number=1000+%%i & mkdir !number:~-2,2!

miniversum

Edit: war woll mal wieder zu langsam
Bitte warten ..
Mitglied: Biber
11.04.2007 um 14:33 Uhr
..eine weitere Variante ohne DelayedExpansion bzw. Zwischenvariable wäre so:
01.
>for /L %i in (1,1,15) do @if %i LEQ 9 @( echo md 0%i) else @echo md %i 
02.
md 01 
03.
md 02 
04.
md 03 
05.
md 04 
06.
md 05 
07.
md 06 
08.
md 07 
09.
md 08 
10.
md 09 
11.
md 10 
12.
md 11 
13.
md 12 
14.
md 13 
15.
md 14 
16.
md 15
[Demo am Cmd-Prompt mit "ECHO md" statt "md"]

Gruss
Biber
Bitte warten ..
Mitglied: Biber
14.04.2007 um 01:17 Uhr
Moin wobleibtdiezeit,
... gibt es dafür eine Lösung?
Na ja, es gab offensichtlich schon drei Lösungsansätze innerhalb der ersten 2 Stunden nach dem Stellen der Frage.

Das ist aber mittlerweile schon ein paar Tage her.
Hattest Du schon Gelegenheit, die Verwendbarkeit des einen oder anderen Schnipsels zu prüfen? Ergebnis?

Grüße
Biber
Bitte warten ..
Mitglied: 45753
15.04.2007 um 14:54 Uhr
Hallo Biber

Tschuldigung dass ich mich erst jetzt melde... mein zweiter Beitrag ist von mir auch noch unbeantwortet... Ich hatte einfach keine Zeit, sorry. Heute habe ich aber Zeit mich drum zu kümmern. Ich bin gerade dabei meine schon existierenden Variablen mit fixes (die leider wegen meiner falschen For-Schleife nicht funktionieren) mit Hilfe von euren Vorschlägen zu verbinden.
Ich habe nun alle drei Vorschläge ausprobiert und rausbekommen, dass miniversum's Lösung genau das ist, was mir noch fehlte. Allesdings verstehe ich die Syntax (noch) nicht ganz. Ohne

setlocal enabledelayedexpansion

würde miniversum's Vorschlag nicht funktionieren. Und nun Kopfschütteln - ich habe jetzt eine 145kb grosse Batch-Datei geschrieben, weis aber immer noch nicht was setlocal enabledelayedexpansion eigendlich macht ?!? Wenn ich ich dieses in meine bestehende Batch einfüge, könnte es dann möglich sein, dass einige Batchfunktionen dann nicht mehr funktionieren ?!?

Zu !number:~-2,2!
Ist das eine monäre Operation ? braucht man dafür setlocal enabledelayedexpansion ?
was genau macht die -2. Allgemein - ich hab keine Ahnung nach welchem Begriff ich im Web suchen muss um das hier verstehen zu können: :~-2,2

Auch wenn ich nicht weis wie es funktioniert ist es mir schon klar, dass wenn ich ordner von z.B. (1,1,111) anlegen möchte, ich :~-3,3 angeben muss... Da ich diese Werte schon in Variablen vorliegen habe, dürfte es nicht schwer sein dies umzusetzen.

Ich würde mich sehr freuen, wenn ihr mir in bezug auf meine Fragen weiterhelfen könntet.

Grüsse,
wobleibtdiezeit
Bitte warten ..
Mitglied: miniversum
15.04.2007 um 17:21 Uhr
setlocal enabledelayedexpansion
die Hilfe hierfür findest du wenn du im cmd "setlocal /?" eingibst. Es bewirkt das eine Variable die statt mit % vorne und hinten, mit ! gekennzeichnet ist verzögert aufgelöst wird.

FOR /L %%i in (1,1,15) do set /a number=1000+%%i & mkdir !number:~-2,2!
Der erste Teil:
FOR /L %%i in (1,1,15) do
Zählt einfach nur von 1 bis 15 in einer Schritten durch und schreibt den Wert jeweils in die Variable i
set /a number=1000+%%i
setzt die Variable number jeweils auf den wert 1000+i, also 1001,1002,1003 usw.
!number:~-2,2!
bedeutet, dass ab dem zweitlletzten Zeichen von hinten (-2) die nächsten zwei Zeichen (2) benutzt werden. Ein echo statt eines md würde dir also immer nur die beiden letzten Zeichen anzeigen, egal was in der Variabeln steht. Da also bei einstelligen Zahlen in der Variablen number dann nicht "1" sondern "1001" stehen würde, erhälst du als letzte zwei Zeichen die "01". Die Hilfe dazu kannst du genauer nachlesen wenn du am cmd "set /?" eigibst. Steht ungefär in der Mitte dann.

miniversum
Bitte warten ..
Mitglied: 45753
15.04.2007 um 20:29 Uhr
Hallo miniversum,

Danke für Dein Infos! Dein For-Schleife habe ich nun verstanden.
Hätte nicht gedacht, dass es die Hilfe cmd /? auch gibt.. ganau so wie setlocal /?
set /? hatte ich mir schon angesehen, nur anscheinend nicht richtig...

Edit:
Hab gerade bemerkt, dass einige Funktionien mit z.B. nircmd nicht mehr funktionierten. Deshalb hab ich
SETLOCAL ENABLEDELAYEDEXPANSION
und
SETLOCAL DISABLEDELAYEDEXPANSION
direkt vor und hinter die Zeile gesetzt, sodass der Rest der Batch-Datei davon ausgeschlossen wird.

Das Endergebnis sieht nun so aus - hatte sorge, dass das mit meinen vielen Variablen nicht hinhauen würde, aber es geht:

01.
:ordnerpereingabe_format+fix__exec 
02.
SETLOCAL ENABLEDELAYEDEXPANSION 
03.
for /L %%i in (%ordnerpereingabe_startzahl%,%ordnerpereingabe_schritte%,%ordnerpereingabe_endzahl%) do set /a startzahlendzahlfix=%ordnerpereingabe_endzahl_suchen%+%%i & mkdir "%ordnerpereingabe_zeichenvor%!startzahlendzahlfix:~-%ordnerpereingabe_ziffern_zaehler%,%ordnerpereingabe_ziffern_zaehler%!%ordnerpereingabe_zeichennach%" 
04.
SETLOCAL DISABLEDELAYEDEXPANSION 
05.
call :done 
06.
goto :start5 
07.
 
08.
:ordnerpereingabe_format-fix__exec 
09.
for /L %%i in (%ordnerpereingabe_startzahl%,%ordnerpereingabe_schritte%,%ordnerpereingabe_endzahl%) do mkdir "%ordnerpereingabe_zeichenvor%%%i%ordnerpereingabe_zeichennach%" 
10.
call :done 
11.
goto :start5 
12.
 

Ich wollte mich mal bei Euch
Biber, bastla, miniversum, hpdnm, usw. für euren Einsatz bedanken.
Ohne Euch Hilfe wäre ich mit meinr Batch-Programmierung nie so weit gekommen.
Auf viele Features wie auch dieses hier hätte meine Batch-Datei wahrscheinlich einfach verzichten müssen.
Fast immer wenn ich nach einer Problemlösung in sachen Batchprogrammierung google, komme ich hier in dieses Forum zu Euch Spezialisten. Und wenn ich mal in ein anderes Forum geleitet werde, dann stehen dort viele offene Fragen ohne Lösung bzw. Fragen mit falschen Antworten wie z.B. dass man in Batch-Dateien nicht rechnen könne. Ich hab den Eindruck dass das Web ohne dieses Forum hier und Euch um einiges ärmer wäre.

-=== Deshalb ein dickes Dankeschön an Euch ===-

Bitte warten ..
Mitglied: Biber
16.04.2007 um 00:38 Uhr
Uppps. wobleibtdiezeit,

ich weiß nicht, wie es den anderen namentlich genannten jetzt geht, aber mich machst Du damit ganz verlegen...

Vielen Dank jedenfalls für die Blumen - und bei aller Bescheidenheit, es deckt sich durchaus mit meinem Eindruck, dass dieses Forum im Bereich "kleine spezialisierte Gebrauchsbatche und -skripte" durchaus einen Spitzenplatz einnimmt.

Schon allein die Quantität -vor ein paar Tagen hatte ich im Bereich "Batch & Shell" den 1000sten Beitrag und deshalb überlegt, ob ich da mal eine kleine Welle mache- schon allein diese Anzahl von über 1000 Batchfragen, bei denen an den meisten auch ein "Gelöst"-Haken dranhängt - das ist rekordverdächtig. Und die Qualität stimmt IMHO auch. *g

Wie dem auch sei, um die Quote zu halten, setze ich jetzt auch diese Frage auf "Gelöst" und "Geschlossen".
Und danke Dir nochmal im Namen aller für das Feedback.

Gruss
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
gelöst Mehrere Charts per VBA erstellen lassen, Titel wird nicht angezeigt

Frage von Aximand zum Thema VB for Applications ...

Batch & Shell
gelöst CMD: icacls in for-Schleife (2)

Frage von Lowrider614 zum Thema Batch & Shell ...

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

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
gelöst For Schleife kaputt? (5)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...