For schleife im Batch - nur Dateinamen ohne Suffix

Hallo,

wie setze ich %~ni in einer For-Schleife richtig ein?
Ich benötige nur den Dateinamen ohne suffix.
Ein Beispiel wäre gut.

Danke
Peter

Hallo Peter

Ich denke, dass Du mit der MS-OS Batchsprache es nicht schaffst, nur
den Namen zu erhalten…
Ich denke mit QBasis (Bestandteil aller MS-OS 16 Bit / 32 Bit - ist
mächtiger als sein Vorläufer GW-Basic")solltest Du auch
schnell und simpel zum Ziel kommen…
Im Internet findest Du auch den Compiler
für „MS-Quick Basic 4.5“…
http://www.dnsinfopage.net/download/files/qbasic45.zip.
Grüsse Peter :wink:

Aus der For-Hilfe (for /? |more)
Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax benutzen:

%~fi - expandiert %i zu einem vollständigen Dateinamen
%~di - erzeugt nur den Laufwerksbuchstaben von %i
%~pi - erzeugt nur den Pfad von %i
%~ni - erzeugt nur den Dateinamen von %i
%~xi - erzeugt nur die Dateierweiterung von %i
%~si - erzeugter Pfad enthält nur kurze Dateinamen
%~$PATH:i - durchsucht die in der PATH-Umgebungsvariablen
angegebenen Verzeichnisse und expandiert die erste
gefundene Datei %i zu dem vollständigen Dateinamen.
Wenn der Name der Umgebungsvariablen nicht definiert
ist oder diese Datei bei der Suche nicht gefunden wurde,
wird dieser Parameter zu einer leeren Zeichenkette
expandiert.

Für Deine Zwecke wäre z.B. sowas denkbar:
for %i in (*.alt) do rename %~ni.alt %~ni.neu

(oder was auch immer Du vorhast).

Gruß
J.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Salü José

Diese Parameter kenne ich nur bei NT.
Wahrscheinlich gibts die auch bei
WIN 95 / 98 und OS/2.
Falls das OS ein MS-DOS
ist, dann gibts die von Dir erwähnten Parameter nicht…

Grüsse Peter ;-o

Hi,

Diese Parameter kenne ich nur bei NT.

Ja sicher. Das ist auch das Brett für NT und Win2K. :smile:

Wahrscheinlich gibts die auch bei
WIN 95 / 98 und OS/2.

Die gibt es m.W. weder bei OS/2 noch bei Win98, bei Win95 ganz sicher nicht.

Falls das OS ein MS-DOS
ist, dann gibts die von Dir erwähnten
Parameter nicht…

Da gebe ich Dir absolut recht…

Aber schon aus Peters Frage ergab sich, wonach er suchte (er hat ja nach %~ni gefragt).

„Ich befürchte, Win2K wird mehr Probleme bereiten als Y2K“.

Gruß
J.

Hi J

Danke für das Info betreffend OS/2 und Win98. Das Sektionsbrett war wohl vor meinen
Augen, sonst hätte ich ja realisieren müssen, dass die Frage auf NT oder Win2000
sich bezieht…

Sind Deine Bedenken betreffend Win2000
begründbar? Die ersten Umrüstungen in meiner Umgebung waren alle sehr positiv.
Lediglich die Defrag / Sektengeschichte gibt mir zu denken…

Grüsse Peter

Sind Deine Bedenken betreffend Win2000
begründbar? Die ersten Umrüstungen in
meiner Umgebung waren alle sehr positiv.

Ich kann mich nur erinnern, wie das bei uns in der Firma mit NT 4 war. Das einzige, was keine Probleme war, war SP3. Wegen der Jahr-2000-Probleme mußten wir notgedrungen auf SP5 umsteigen, und das GAB jede Menge Ärger.

Lediglich die Defrag / Sektengeschichte
gibt mir zu denken…

Mir auch, das alleine wäre schon ziemlich viel.
Aber auch die Meldungen der letzten Tage, wonach noch etliche Zehntausend ungefixte Bugs drin sein sollen, läßt mich nichts Gutes erwarten.

Eigentlich sollte das aber nur ein cooler Spruch sein.

Gruß
J.

Hallo PeterG

Ich denke, dass Du mit der MS-OS
Batchsprache es nicht schaffst, nur
den Namen zu erhalten…

Wenn Du dir nicht sicher bist, das es nicht geht, lass es bitte, Deine MEINUNG kundzutun. (Hier sind konstruktive Komentare gefragt, destruktive nur, wenns wirklich net geht) Es geht nämlich ohne weiteres.

Wie?
So:

@echo off & for /f „tokens=1 delims=.“ %a in (‚dir /b %systemroot%\system32\edit.com‘) do echo %a & echo on

Erzeugt genau den String „edit“

Allerdings würde mich schon etwas genauer interessieren, wie Dein Problem, Peter ohne G, aussieht, insbesondere für was Du %~n benötigst, und wie du den Pfad zu deinem File bekommst.

Hallo PeterG

Ich denke, dass Du mit der MS-OS
Batchsprache es nicht schaffst, nur
den Namen zu erhalten…

Wenn Du dir nicht sicher bist, das es
nicht geht, lass es bitte, Deine MEINUNG
kundzutun. (Hier sind konstruktive
Komentare gefragt, destruktive nur, wenns
wirklich net geht) Es geht nämlich ohne
weiteres.

Salü Manfred
Danke für die Lösung. Wie Du vielleicht dem vorhergehenden Posting an José entnommen hast, war mir die Fokusierung auf NT/Win2000 aus den Augen geraten.
In jedem Fall bin ich fasziniert und werde darüber sinnieren, dass wenn man der Ansicht ist, dass etwas nicht geht und dies kundtut sich einer desttruktiven Haltung schuldig macht…
In jedem Fall ist es gut, dass einer sich völlig sicher ist und für Recht und Ordnung sorgt und die Bösen bestraft…
Grüsse Peter :wink:)

Sorry
Hallo PeterG!

Tut mir leid, dass das so grob geraten ist. Das hier ist ja schließlich auch n Forum, in dem Meinungen gefragt sind. Von jedem, der sich sinnvolle Gedanken zu einem Problem macht. Ich fands nur deprimierend das scho wieder was net gehen soll. Und Dein Vorschlag mit QBasic hätte ja auch n Ergebnis produziert. Dein Posting an Jose hab ich, als ich´s gelesen habe, leider net so verstanden, wie´s gemeint war.
Sorry nochmal.

in Demut
Manfred

(hoffe Dich net auf ewig vergrault zu haben:wink:

Schön das Du Sinn für Ironie hast und es
mir nicht übel genommen hast… :wink:)

Ganz im Ernst, dass wiedermal etwas nicht
oder auf Anhieb so läuft, kennt ja wahr-
scheinlich jeder in der Informatik…

Betreffend dem codieren von Batch’s wundere
ich mich immerwieder wie wenig Leute den
alten BE.EXE von Norton oder den ollen
BASIC Interpreter nutzen. Natürlich bietet
MS bei Win 98,NT4/WIN2000 das WSH an.
Jedoch sah ich oft, dass alte Hasen Ihre
Erfahrungen mit QBASIC schneller amortisieren konnten - daher diese Intention…

Nochmals danke das wir den kleinen Disput so
zivilisiert erledigen konnten-Peter :wink: