tobias.mock
Goto Top

Laufwerksbezeichnung (label) in Batch als Variable nutzen

Hallo zusammen,
ich bin sicher, dass meine Frage für alle Experten hier viel zu simpel ist, ich bin aber absoluter Einsteiger beim Thema Batch-Dateien und freue mich über eure Hilfe!

Ich möchte die Laufwerksbezeichnung (DOS: label) eines Wechsellaufwerks, das immer den selben Laufwerksbuchstaben hat, auslesen und innerhalb der selben Batch-Datei als Variable verwenden. Die Wechseldatenträger sind nach Wochentagen benannt und ich möchte sie innerhalb der Batch-Datei anhand ihres Labels identifizieren, um dann über if-clauses bestimmte Aktionen für die Wochentage zu steuern. Das klappt alles ganz gut, ich brauche nur einmal eure Hilfe (1-3 Zeilen), wie ich das Label eines Datenträgers auslese (ohne es zu ändern) und dem ausgelesenen Wert einen Variablennamen zuordne...

Danke für eure Hilfe!
VG Tobias

Content-Key: 336312

Url: https://administrator.de/contentid/336312

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: sabines
sabines 28.04.2017 um 07:22:02 Uhr
Goto Top
Moin,

hinterlege doch einfach eine eindeutige Textdatei auf dem Laufwerk und frage diese dann mit if exist ab und dannach startest Du die entsprechenden Aktionen, wäre das was für Dich?

Gruss
Mitglied: kaiand1
kaiand1 28.04.2017 um 07:40:22 Uhr
Goto Top
Na das ist doch zu Einfach face-smile

er sucht sicherlich sowas in der Art..

@echo off
for /f %%a in ('wmic volume where Label^=Backup-Freitag' get DriveLetter ^| find ":"') do set "DriveLetter=%%~a"  
echo %DriveLetter%
Mitglied: Friemler
Lösung Friemler 28.04.2017 um 10:43:32 Uhr
Goto Top
Hallo @all,

da der Laufwerksbuchstabe aller Wechsellaufwerke immer konstant ist und das LABEL gesucht wird, sollte der Code wohl eher so aussehen:
@echo off & setlocal

set "DriveLetter=C:"  

for /f "tokens=2 delims==" %%a in ('wmic volume where DriveLetter^="%DriveLetter%" get Label /value') do (  
  set "DriveLabel=%%a"  
)

echo %DriveLabel%

Gruß
Friemler
Mitglied: Pedant
Lösung Pedant 28.04.2017 um 11:35:59 Uhr
Goto Top
Hallo Tobias,

Deine Aufgabenstellung:
Der Laufwerksbuchstabe ist immer derselbe und die Laufwerksbezeichnung soll in eine Variable eingelesen werden.

Das Folgende ist nicht so elegant wie die Lösung mit for, da es über eine temporäre Hilfs-Datei läuft und die Ausgabe bei deutschem OS anders lautet als bei englischem, aber es funktioniert gut und ist wahrscheinlich leicht nachvollziehbar.
@echo off
set buchstabe=F:
if not exist %buchstabe%\. goto fehler
vol %buchstabe% > temp.txt
set /p lwname= < temp.txt
del temp.txt
set lwname=%lwname:~32%
echo Die Laufwerksbezeichnung lautet: %lwname%
goto ende
:fehler
echo Laufwerk nicht gefunden
goto ende
:ende


Anmerkungen:

02.
definiert eine Variable für den Laufwerksbuchstaben, hier F:
03.
Prüft ob auf dem Laufwerk F: ein Stammverzeichnis existiert. Das ist nicht der Fall wenn F: nicht existiert oder F: nicht formatiert ist.
04.
vol F: gibt "label" aus ohne es zu ändern. Die Ausgabe wird in die Datei temp.txt umgeleitet.
05.
hier wird die Variable %lwname% belegt und zwar mit dem Inhalt (der ersten Zeile) von temp.txt
06.
temp.txt wird nicht mehr benötigt, also gelöscht
07.
Der Inhalt von %lwname% ist jetzt Datenträger in Laufwerk F: ist Freitag
Interessant ist aber nur der Teil nach dem "statischen" Meldungstextanteil, also alles ab dem 32. Zeichen, also wird %lwname% neu belegt und zwar mit dem alten Wert von %lwname% aber nur der Teil ab dem 32. Zeichen bis zum Ende
Bei nichtdeutschen OS lautet der "statische" Teil anders und ist daher wahrscheinlich nicht 32 Zeichen lang. Das gälte es gegebenenfalls anzupassen.
08.
Die gewünschte Variable %lwname% steht zur Auswertung zur Verfügung.

Gruß Frank
Mitglied: tobias.mock
tobias.mock 28.04.2017 um 13:34:17 Uhr
Goto Top
Danke, Friemler! Ich versteh den Code noch nicht komplett, es scheint aber exakt das zu tun, was ich vorhatte! Spitze!
Mitglied: tobias.mock
tobias.mock 28.04.2017 um 13:41:05 Uhr
Goto Top
Danke, Frank! Wenn ich mit Friemlers Lösung nicht klar komme, hast du mir hier eine wirklich auch für Laien nachvollziehbare Lösung aufgezeigt. Auch die Lösung, das Stammverzeichnis zu checken, gefällt mir, das habe ich bislang immer über eine Dummy-Datei im Root gelöst, so ist das viel cooler, da ich innerhalb der Batch-Datei das Laufwerk formatiere und dann die Dummy-Datei immer neu erzeugen musste ;). Danke auch für die tolle Doku und Erläuterung... ich glaube ich kann hier noch eine Menge lernen ;)

VG und allen ein schönes Wochenende!
Tobias
Mitglied: Pedant
Pedant 29.04.2017 um 10:59:36 Uhr
Goto Top
Hallo Tobis,

Zitat von @tobias.mock
Ich versteh den Code noch nicht komplett
das ging mir auch so.

Da ich mit der Syntax des For-Befehls leider nicht wirklich vertraut bin, das aber immer schon ändern wollte, habe ich das Beispiel von Friemler als Anlass genommen, nachzuvollziehen was es macht.

Es wird diese Befehlszeile ausgeführt
wmic volume where DriveLetter="C:" get Label /value
deren Ausgabe ist beispielsweise
Label=System
wenn denn das Laufwerk C: den Namen "System" hat.
(Der Befehl spuckt zusätzlich ein paar Leerzeilen aus, die aber in diesem Konstrukt keine Auswirkung haben.)

Die For-Schleife durchläuft alle Ausgabezeilen (auch die Leerzeilen) des angegebenen Befehls.
Die Zeilen werden jeweils in Teilstücke (tokens) zerschnitten.
Das Trennzeichen (delims) kann individuell definiert werden.
delims==
bedeutet das Trennzeichen ist das Gleichheitszeichen

Label=System
enthält das Trennzeichen einmal, also wird die Zeile in zwei tokens zerlegt und zwar in Label und System

tokens=2
gibt nicht an, dass das Ergebnis zwei tokens sind, sondern, dass nur der 2. token interessiert.
Der Variablen %%a wird daher der zweite Token zugeordnet, also System
und dadurch kann der Zielvariablen der gewünscht Wert zugeordnet werden:
set "DriveLabel=%%a"

Bei Angabe von tokens=1,2 würden der 1. und der 2. token verwendet werden, wobei der erste token der explizit angegebenen Variabel %%a zugeordnet würde und der zweite token der "Folge"-Variablen %%b (der nächst höhere Buchstabe).
Wenn die Variablen dann wie folgt benutzt würden:
echo %%a=%%b
wäre die Ausgabe
Label=System
was recht witzlos wäre.
(Der verwendete echo-Befehl würde durch die For-Schleife auch auf die Leerzeilen angewendet werden, die der Befehl wmic volume... mit ausspuckt.)

Da viele Andere auch nicht mit der Syntax des For-Befehls vertraut sind, hat Friemler dazu ein sehr gutes Tutorial geschrieben, was auch die Quelle für meinen Beitrag hier war.
Tutorial zur FOR-Schleife
Dazu an dieser Stelle meinen herzlichen Dank an Friemler.

Gruß Frank
Mitglied: Friemler
Lösung Friemler 01.05.2017 aktualisiert um 20:07:37 Uhr
Goto Top
Hallo Frank,

ich war die letzten Tage unterwegs und konnte hier nicht mitlesen/mitschreiben. Schönen Dank für die Erklärung meines Codes, hätte ich nicht besser machen können. Und schön zu lesen, dass mein Tutorial mal wieder bei jemandem zu neuen Erkenntnissen geführt hat.

Deine Lösung (Verwendung des VOL Befehls) hat auch etwas für sich. Um den WMIC Befehl benutzen zu können, muss das Benutzerkonto, unter dem der Befehl ausgeführt wird, Mitglied der Benutzergruppe "Administratoren" sein, was nicht immer der Fall ist. Dann ist Deine Lösung mit VOL besser geeignet. Man könnte den Code aber noch etwas eleganter umsetzen, indem man auch hier die FOR-Schleife statt eine temporäre Datei verwendet.

Als Vorschlag (und kleine Herausforderung zum Nachvollziehen face-wink):
@echo off & setlocal 

set "DriveLetter=C:"  

for /f "skip=1 tokens=1* delims=:" %%a in ('vol %DriveLetter% ^| findstr /n "^" ^| sort /r') do (  
  for %%c in (%%b) do (
    set "DriveLabel=%%c"  
  )
)

echo %DriveLabel%

Ich versuche mit diesem Ansatz auch das von Dir schon erkannte Problem der unterschiedlichen Ausgabe des VOL Befehls in den verschiedenen Windows UI-Sprachen zu umgehen. Meine Annahme ist, dass in jeder Sprache die Laufwerksbezeichnung das letzte Wort in der ersten Zeile der Ausgabe von VOL ist.

Grüße
Friemler
Mitglied: tobias.mock
tobias.mock 01.05.2017 um 23:04:06 Uhr
Goto Top
Hi Frank und Friemler,

nochmals danke an euch beide, dass ihr mir so viele gute Tipps und Infos zukommen lasst! Das ist wirklich toll und ich hab langsam wirklich Spaß daran, eine optimale Lösung zu finden und die kleine Batchdatei wird inzwischen immer länger ;). Danke auch für den Hinweis mit dem Admin-Kto., Friemler. Ich hatte es am WE im HomeOffice probiert und keinen Erfolg. In der Firma soll das Script dann aber auf einem Server laufen und da ist natürlich der Administrator angemeldet.

Ich werde mich künftig wohl auch mal mit dem WMIC auseinandersetzen, habe wie gesagt langsam wirklich Gefallen daran gefunden, die Lösung zu optimieren. Btw. gibt es eine Möglichkeit, den Wochentag (z.B. "Montag") aus dem Datum des Rechners aubzugreifen, oder übersteigt das die Möglichkeiten von CMD / WMIC?

VG + einen guten Start in die Woche!
Tobias
Mitglied: Friemler
Friemler 02.05.2017 aktualisiert um 10:45:36 Uhr
Goto Top
Hallo Tobias,

per WMIC gibt es die folgende Möglichkeit, den Wochentag zu ermitteln:
@echo off & setlocal

for /f "tokens=2 delims==" %%a in ('wmic path Win32_LocalTime get DayOfWeek /value') do (  
  set "DOW=%%a"  
)

if "%DOW%" equ "0" set "WeekDay=Sonntag"  
if "%DOW%" equ "1" set "WeekDay=Montag"  
if "%DOW%" equ "2" set "WeekDay=Dienstag"  
if "%DOW%" equ "3" set "WeekDay=Mittwoch"  
if "%DOW%" equ "4" set "WeekDay=Donnerstag"  
if "%DOW%" equ "5" set "WeekDay=Freitag"  
if "%DOW%" equ "6" set "WeekDay=Samstag"  

echo %WeekDay%


Eine Möglichkeit ohne WMIC auszukommen besteht darin, ein Inline-VBScript zu verwenden:
@echo off & setlocal

set "VBScript=%TEMP%\GetWeekDay.vbs"  

>"%VBScript%" echo WScript.Echo WeekdayName^(Weekday^(Now^)^)  

for /f "delims=" %%a in ('cscript /nologo "%VBScript%"') do (  
  set "WeekDay=%%a"  
)

del "%VBScript%"  

echo %WeekDay%

Vorteil dieser Lösung ist, dass der Name des Wochentags immer in der Sprache der Windows Benutzeroberfläche geliefert wird. Allerdings muss die Ausführung des Windows Script Hosts erlaubt sein (kann per GPO verboten werden).

Grüße
Friemler
Mitglied: Pedant
Pedant 02.05.2017 um 11:39:13 Uhr
Goto Top
Hallo,

Zitat von @Friemler
...kleine Herausforderung zum Nachvollziehen

wenn ich davon ausgehen darf, dass tokens=1* gleichbedeutend ist mit tokens=1,* kann ich's nachvollziehen.

Alternativ zu
for /f "skip=1 tokens=1* delims=:" %%a in ('vol %DriveLetter% ^| findstr /n "^" ^| sort /r')
funktioniert auch
for /f "tokens=1*" %%a in ('vol %DriveLetter% ^| findstr /i "%DriveLetter%"')

Zitat von @Friemler
Meine Annahme ist, dass in jeder Sprache die Laufwerksbezeichnung das letzte Wort in der ersten Zeile der Ausgabe von VOL ist.

Den Satz muss ich korrigieren. Er muss so anfangen:
"Meine Annahmen sind...", denn der Satz enthält gleich drei Annahmen.

Beispiel einer deutschen Ausgabe:
"Datenträger in Laufwerk C: ist System"

3. "in der ersten Zeile"
Das ist wahrscheinlich sprachübergreifend einheitlich.

1. "das letzte"
Das trifft vermutlich auf die meisten Sprachen zu.
Yoda würde es allerdings so ausdrücken: "Datenträger in Laufwerk C: System ist"

2. "Wort"
Hier ist das eigentliche Problem:
Bsp.: "Datenträger in Laufwerk C: ist System Platte"
=> DriveLabel = Platte

Zitat von @tobias.mock
...gibt es eine Möglichkeit, den Wochentag (z.B. "Montag") aus dem Datum des Rechners abzugreifen, oder übersteigt das die Möglichkeiten von CMD / WMIC?

Eigentlich bin ich ein Freund von Boardmitteln und habe daher auch (mit viel Aufwand) Zeit- und Datums-Berechnungen mit "reinem" cmd gemacht, beispielsweise:
- Ist dieses Jahr Schaltjahr?
- Von wann bis wann ist dieses Jahr Sommerzeit?
- Welches Datum war vor zwei Stunden?
Das lässt sich alles irgendwie mit cmd bewerkstelligen.

Irgendwann war ich den Aufwand aber leid und habe mir ein externen Befehl geschrieben, der mir Datums- und Zeit-Angaben in beliebiger Form ausgibt und (optional) zur Weiterverwendung als Umgebungsvariablen zur Verfügung stellt.
http://www.pedant.de/html/tools_zeitausgabe.php
Im Moment bin ich gerade dabei dem "Befehl" noch die Option zur relativen Zeitverschiebung beizubringen, was auch schon fast fertig ist und wahscheinlich heute noch "online" geht.
Es ist eine kleine, installationsfreie exe, falls Du sie ausprobieren/nutzen möchtest...

Gruß Frank
Mitglied: Friemler
Friemler 02.05.2017 um 11:52:20 Uhr
Goto Top
Hallo Frank,

Zitat von @Pedant:

Yoda würde es allerdings so ausdrücken

Da Yoda "Die Macht" zur Verfügung hat, hat er es nicht nötig Computer zu benutzen und wird deshalb auch nie bei Microsoft angestellt.


Zitat von @Pedant:

Bsp.: "Datenträger in Laufwerk C: ist System Platte"
=> DriveLabel = Platte

Der Gedanke kam mir auch, ich habe jedoch noch eine 4. Annahme gemacht: Der Benutzer hat ein rudimentäres Resthirn im Kopf und unterlässt es, seinen Platten Namen zu geben, die Leerzeichen enthalten. Aber schon klar, man kann nie wissen...

face-wink Grüße
Friemler
Mitglied: Pedant
Pedant 02.05.2017 um 12:10:19 Uhr
Goto Top
Hallo Friemler,

im konkreten Fall geht es ja auch nur um einen definierten Satz von Wechseldatenträgern, die nach Wochentagen benannt sind, insofern ist die 4. Annahme so oder so berechtigt.

Nachfrage:
tokens=1* ist identisch mit tokens=1,*
oder doch nicht?

Gruß Frank
Mitglied: Friemler
Friemler 02.05.2017 um 12:16:36 Uhr
Goto Top
Hallo Frank,

Zitat von @Pedant:

tokens=1* ist identisch mit tokens=1,*

Ja, ist es.

Grüße
Friemler
Mitglied: Pedant
Pedant 04.05.2017 um 23:33:32 Uhr
Goto Top
Hallo Tobias und wen es sonst interessieren könnte,

Zitat von @Pedant:
Irgendwann war ich den Aufwand aber leid und habe mir einen externen Befehl geschrieben, der mir Datums- und Zeit-Angaben in beliebiger Form ausgibt und (optional) zur Weiterverwendung als Umgebungsvariablen zur Verfügung stellt.
http://www.pedant.de/html/tools_zeitausgabe.php
Im Moment bin ich gerade dabei dem "Befehl" noch die Option zur relativen Zeitverschiebung beizubringen, was auch schon fast fertig ist und wahscheinlich heute noch "online" geht.
Es ist eine kleine, installationsfreie exe, falls Du sie ausprobieren/nutzen möchtest...
Es sind dann doch zwei Tage mehr ins Land gegangen, aber jetzt ist es fertig (inklusive "Handbuch").

Gruß Frank
Mitglied: Friemler
Friemler 05.05.2017 um 00:17:23 Uhr
Goto Top
Hallo Frank,

sieht erstmal aus, als könnte das Tool wirklich nützlich sein. Habe es auf jeden Fall mal runtergeladen aber noch nicht getestet.

Was ich nicht so gelungen finde ist:

a) Der deutsche Name.
b) Die auf deutsch benannten Optionen und Schalter.

Batchscript und allgemein alle Programmiersprachen sind auf englisch gehalten, mich stören deshalb nicht-englische Befehle/Bezeichner/Optionen usw. im Quellcode. Aber das ist natürlich Geschmackssache.

Grüße
Friemler
Mitglied: Pedant
Pedant 07.05.2017 um 22:29:34 Uhr
Goto Top
Hallo Friemler,

Zitat von @Friemler:
sieht erstmal aus, als könnte das Tool wirklich nützlich sein. Habe es auf jeden Fall mal runtergeladen aber noch nicht getestet.
Ich hab seither das Tool und das Handbuch überarbeitet. Es waren doch noch ein paar Fehler drin und ein paar Ergänzungen kamen dabei auch hinzu.
Wenn Du es also ausprobieren und nutzen möchtest, solltest Du die neue Version runterladen.

Zitat von @Friemler:
Was ich nicht so gelungen finde ist:

a) Der deutsche Name.
b) Die auf deutsch benannten Optionen und Schalter.

Batchscript und allgemein alle Programmiersprachen sind auf englisch gehalten, mich stören deshalb nicht-englische Befehle/Bezeichner/Optionen usw. im Quellcode. Aber das ist natürlich Geschmackssache.
Wenn's nur der Name wäre: ren Zeitausgabe.exe timeoutput.exe

Ich weiß was Du meinst und ja, die "Amtssprache" in der IT ist Englisch.

Bei den Tools, die ich im wesentlichen für mich programmiere (auch wenn ich ein paar davon auf meiner Seite zum Download anbiete) entscheide ich mich dennoch meist für eine deutsche Version und zwar mit folgenden Gründen:
Ein Software und sei es nur ein kleines Tool, braucht ein Handbuch.
Würde ich das Handbuch auf Englisch verfassen, müsste ich es mit "Leo" schreiben und meine "Kunden" müssten es vermutlich mit "Leo" lesen.
Ich meine, welcher Ausländer verirrt sich schon auf pedant.de?
Meine "Kunden" sind also deutschsprachig und ich auch.
Es wäre daher irgendwie albern alles hin und her zu überstetzen, nur damit es international wäre, obwohl es nie international sein wird.
Erstellung, Nutzung und eventueller Support funktionieren daher viel besser, wenn alles auf Deutsch ist.
Es hat auch einen (denselben) Grund, warum die Boardsprache auf administrator.de Deutsch ist, obwohl viele der diskutierten Inhalte spachunabhängig interessant sind.

Zitat von @Friemler:
Aber das ist natürlich Geschmackssache.
Ja, das ist es und daher ist meine Erklärung hier keine "Verteidigung" sondern lediglich eine Erklärung und Deine Einwände verstand ich auch nicht als Angriff.
Deutsch im Quellcode hat übrigens einen Vorteil.
Ich kann leicht zwischen reservierten Begriffen und frei wählbaren Benennungen unterscheiden.
Wenn ich also ein Syntax-Beispiel wie dieses finde:
List<string> newList = new List<string>();
bin ich verunsichert und probiere rum oder suche weiter bis ich sowas finde:
List<string> MeineListe = new List<string>();

Gruß Frank

PS: Es würd mich freuen, wenn Du Dich dennoch mit dem Tool anfreunden kannst und es Dir ebenso gute Dienste leistet wie mir.
Für Feature Requests wäre ich auch offen, was die Sprache angeht: Wenn Du das Handbuch übersetzt, schreib ich das Tool auf Englisch um.
Mitglied: Friemler
Friemler 08.05.2017 um 10:06:34 Uhr
Goto Top
Hallo Frank,

danke für das Update. Ich habe jetzt mal ein bisschen mit dem Tool rumgespielt und es hat gut funktioniert. Besonders die Möglichkeiten mit Zeit - und Datumswerten zu rechnen gefallen mir.

Nochmal zum Thema Sprache: Ich finde nicht, dass der Hilfetext, den das Tool durch den Parameter /? anzeigt oder gar Deine Internetseite übersetzt werden müsste. Ich meinte lediglich solche Schalter wie datum, datumzeit, wt, jt, usw. Außerdem, Kürzel wie d, y, h, H, usw. basieren ja auch nicht auf deutschen Wörtern face-wink...

Grüße
Friemler
Mitglied: Pedant
Pedant 08.05.2017 um 23:04:42 Uhr
Goto Top
Zitat von @Friemler:
Nochmal zum Thema Sprache: ... Ich meinte lediglich solche Schalter wie datum, datumzeit, wt, jt, usw. Außerdem, Kürzel wie d, y, h, H, usw. basieren ja auch nicht auf deutschen Wörtern face-wink...
Wie heißt es so schön: "Der Kunde ist König." oder anders gesagt:
Deine blöden Schalter habe ich übersetzt.
http://www.pedant.de/html/download.php?datei=zeitausgabe&version=19 ...
Das Argument mit der Inkonsistenz zu d, y, h, H war durchaus treffend.
Den Präfix "za" bei den Umgebungsvariablen habe ich allerdings belassen, da ich es recht praktisch finde, dass sie am Ende des Alphabeths angesiedelt sind.
Die Exe kannst Du nach Belieben umbenennen. Vielleicht hast Du ja auch einen englichen Namensvorschlag, der mir zusagt.

Zitat von @Friemler:
Ich finde nicht, dass der Hilfetext, den das Tool durch den Parameter /? anzeigt oder gar Deine Internetseite übersetzt werden müsste.
Das Online-Handbuch werde ich tatsächlich nicht übersetzten, nur entsprechend der Änderungen noch überarbeiten, aber...
Die Programmsprache (Hilfe und Fehlermeldungen) ist auf Systemen mit deutschem Windows-UI jetzt Deutsch und auf allen anderen Englisch.
Mit /l de|en kann man allerdings, unabhängig von Windows-UI, die Sprache wählen.

Die hier verlinkte Version ist noch nicht online vorgestellt, Vermutlich hat sie auch noch ein paar Bugs, ob der Umbenennungen und der Zweisprachigkeit. Ich werd auf jeden Fall noch einige Tests machen, bevor ich sie veröffentliche.
Ich hab sie nur schon mal hochgeladen, um zu fragen, ob Du's Dir so vorgestellt hattest.

Gruß Frank

PS: Wessen Thread ist das hier eigentlich?
Mitglied: Friemler
Friemler 09.05.2017 um 01:29:35 Uhr
Goto Top
Hey Frank,

Deine blöden Schalter habe ich übersetzt.
face-monkey Yeah!

Die Exe kannst Du nach Belieben umbenennen. Vielleicht hast Du ja auch einen englichen Namensvorschlag, der mir zusagt.
Na ja, in der Kürze liegt die Würze, gerade auf der Konsole. Mir fiel auf die Schnelle (ich habe für meine Tests die EXE bereits umbenannt face-wink) ganz profan DTTool (für DateTimeTool) ein.

Und da ich auch ein kleiner Pedant bin: Wie wäre es, wenn Du Dir den Namen der EXE aus argv holst und diesen Wert bei der Ausgabe des Hilfetextes und bei Fehlermeldungen verwendest?

Die Programmsprache (Hilfe und Fehlermeldungen) ist auf Systemen mit deutschem Windows-UI jetzt Deutsch und auf allen anderen
Englisch. Mit /l de|en kann man allerdings, unabhängig von Windows-UI, die Sprache wählen.
Wow, ich bin echt beeindruckt!

PS: Wessen Thread ist das hier eigentlich?
face-smile Habe ich mich auch schon gefragt. Evtl. sollten wir das per PM fortsetzen.

Grüße
Friemler
Mitglied: Pedant
Pedant 09.05.2017 um 11:17:44 Uhr
Goto Top
Hallo Friemler,

Zitat von @Friemler:
ganz profan DTTool (für DateTimeTool)
Ich denk mal drüber nach.

Zitat von @Friemler:
ich habe für meine Tests die EXE bereits umbenannt...
... da ich auch ein kleiner Pedant bin: Wie wäre es, wenn Du Dir den Namen der EXE aus argv holst und diesen Wert bei der Ausgabe des Hilfetextes und bei Fehlermeldungen verwendest?
Da ich der Pedant bin, ist das doch schon drin.
Ist es Dir nicht aufgefallen oder funktioniert es bei Dir nicht und Du erhälst nur die Vorbelegung der dafür vorgesehenen Variablen?

Ich mache es so, da das den tatsächlichen Dateinamen liefert (liefern sollte):
<code type="plain>private static string programmname = "Zeitausgabe";
...
public static void Main(string args)
{
programmname = Process.GetCurrentProcess().MainModule.FileName;
programmname = Path.GetFileNameWithoutExtension(programmname);

Bei Argument erhält man den aufrufenden Befehl und der kann auch abweichend sein.
Beispiele: Zeitausgabe, zeitausgabe und zEiTaUsGaBe ruft Zeitausgabe auf
<code type="plain>string p = Environment.GetCommandLineArgs();
Console.WriteLine("p: " + p);


Zitat von @Friemler:
Evtl. sollten wir das per PM fortsetzen.
Ab jetzt gerne per PN oder auch gerne per E-Mail (siehe Online-Handbuch), wie's Dir lieber ist.

Gruß Frank