Ich bin neu bei Windows-Skripten und habe den absoluten Pfad wie – /bin/debug/test/abc.xyz.dll
und ich möchte den Dateinamen entfernen und nur einen Pfad wie den folgenden als Ausgabe erhalten: /bin/debug/test/
.
Wie soll ich das machen?
Antwort1
FOR
Hierzu können Sie die erweiterten Funktionen einer Schleife nutzen - auch wenn diese nicht "geloopt" wird:
@echo off
setlocal EnableExtensions
set "arg=%~1"
for /f %%A in ('echo %arg%') do echo %%~pA
wo Sie dieses Skript mit dem vollständigen Dateinamen aufrufen, möglicherweise in Anführungszeichen, um die darin enthaltenen Leerzeichen zu schützen.
bearbeiten:
Mein ursprünglicher Code echo %%~nxA
war offensichtlich falsch, tut mir leid. Er isoliert den Dateinamen vom Pfad und gibt den Dateinamen zurück. Der obige Code gibt jetzt nur den Pfad zurück (ohne den Laufwerksbuchstaben).
Bearbeitung2: Ich bin @Karan dankbar für den Hinweis, dass dies wie folgt abgekürzt werden kann:
@echo off
setlocal EnableExtensions
echo %~p1
weil die erweiterte Variablenerweiterungssyntax nicht nur in FOR
Schleifen verfügbar ist, sondern auch mitArgumenterweiterungauch (siehe CALL /?).