Freies Laufwerk ermitteln

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Freies Laufwerk ermitteln

Re: Freies Laufwerk ermitteln

by BoBo » 04 Jan 2021, 16:42

@just me :thumbup:

Re: Freies Laufwerk ermitteln

by Filzfrosch » 04 Jan 2021, 12:04

Moin
Ihr seid der Hammer hier :thumbup:
Alle funzen gut.
Und zum Schluß der Einzeiler mit Erklärung von just me ist dann Champions League :D
Vielen Dank dafür, ich finde es immer wieder klasse zu sehen, wie Cracks die Aufgabe überhaupt angehen.
Daraus versuche ich mir dann ein wenig abzuschauen.
Aber mein Dank auch an alle anderen!

Re: Freies Laufwerk ermitteln

by just me » 04 Jan 2021, 07:29

@BoBo,

der Regex definiert eine Klasse [...] für die in der Laufwerksliste enthaltenen Buchstaben und entfernt alle Buchstaben dieser Klasse aus dem 'Laufwerksbuchstabenstring'. Was übrig bleibt, ist frei, und der letzte der Freien wird genommen SubStr(..., 0).

Re: Freies Laufwerk ermitteln

by BoBo » 04 Jan 2021, 06:57

@just me :thumbup:
Ich hatte zwztl an einen ASCII-Wertabgleich gedacht.
Ähm, was genau macht die RegExLogik (semantisch)?

Re: Freies Laufwerk ermitteln

by haichen » 04 Jan 2021, 05:50

Aaaaah. Ooooh. Toll. Der Regexp ist klasse!! :bravo:

Re: Freies Laufwerk ermitteln

by just me » 04 Jan 2021, 04:50

Moin,

für die Freunde von 'weniger Zeilen ist mehr': ;)

Code: Select all

LWList := "CDEFGHIXYZ" ; <<<<< Test
LWB := SubStr(RegExReplace("CDEFGHIJKLMNOPQRSTUVWXYZ", "[" . LWList . "]"), 0)
MsgBox, %LWB%

Re: Freies Laufwerk ermitteln

by haichen » 04 Jan 2021, 02:27

Hier noch eine etwas kürzere Variante:

Code: Select all

DriveGet, LaufwerkBuschStabe, List
FreieLWBuchstaben :="CDEFGHIJKLMNOPQRSTUVWXYZ"
Loop, parse, LaufwerkBuschStabe
     FreieLWBuchstaben := StrReplace(FreieLWBuchstaben, A_LoopField, "",, 1)

msgbox, % FreieLWBuchstaben

Re: Freies Laufwerk ermitteln

by KHA » 03 Jan 2021, 17:25

Idee 2: vlt. ist es einfacher

Code: Select all

DriveGet, LaufwerkBuschStabe, List,
AnzahlBuchstaben := StrSplit(LaufwerkBuschStabe).MaxIndex()

Loop, 26
{
Großbuchstabe := Chr(91 - A_Index)
Buchstabe := StrSplit(LaufwerkBuschStabe)[AnzahlBuchstaben]
	if (Buchstabe != Großbuchstabe)
	{
	FreieBuchstabe := Großbuchstabe
	break
	}
AnzahlBuchstaben--
}
MsgBox, % FreieBuchstabe

Re: Freies Laufwerk ermitteln

by Filzfrosch » 03 Jan 2021, 17:20

Danke, hab den Code an mein Script angepasst und klappt jetzt super!
Vielen Dank!

Vor allem sind es nur ein paar Zeilen Code, gegen meinen davor .... :roll:

Re: Freies Laufwerk ermitteln

by KHA » 03 Jan 2021, 17:00

Spontan fällt mir, sowas ein:

Code: Select all

DriveGet, LaufwerkBuschStabe, List, 
;LaufwerkBuschStabe := "CDEFGHIXZ"
AnzahlBuchstaben := StrSplit(LaufwerkBuschStabe).MaxIndex()

For Each, Zeichen In StrSplit("ZYXWVUTSRQPONMLKJIHGFEDCBA")
{
Buchstabe := StrSplit(LaufwerkBuschStabe)[AnzahlBuchstaben]
	if (Buchstabe != Zeichen)
	{
	FreieBuchstabe := Zeichen
	break
	}
AnzahlBuchstaben--
}

MsgBox, % FreieBuchstabe

Freies Laufwerk ermitteln

by Filzfrosch » 03 Jan 2021, 16:33

Moin,

ich versuche jetzt seit einiger Zeit vergeblich vor dem Setzen eines Netzlaufwerks (mit net use) zu prüfen, welcher freie Laufwerksbuchstabe zur Verfügung steht.
Ich habe über das Kommando

Code: Select all

DriveGet, LWList, List
einen String aller zur Zeit vergebenen Laufwerksbuchstaben. (z.B. CDEFGHIXZ).
Jetzt möchte ich, dass von Z nach A geprüft wird, welcher Buchstabe frei wäre (in diesem Beispiel also Y).
Wie dann das Laufwerk mit dem freien Laufwerksbuchstaben verbunden wird ist kein Problem, aber die Buchstabenprüfung selber scheitert kläglich ...
Ich habe es versucht mit If InStr(LWList1,Z) usw. aber dabei findet er im obigen Beispiel ein Y obwohl keines dabei ist.
Außerdem muss so natürlich jeder Buchstabe einzeln geprüft werden, bis ein freier gefunden wurde. Dadurch wird das Script natürlich ellenlang.
Ich denke, da gibt es bestimmt eine viel kleinere, kompaktere Lösung.
Wer greift mir kurz mal unter die Arme?
Dank im Voraus!

Grüße

Top