2 Stimmen

Batch: Ermitteln des letzten Ordnernamens aus einem absoluten Pfad

Ich verwende ein Batch-Skript zur automatischen Sicherung von Dateien auf meinem NAS, und ich muss den letzten Ordnernamen aus einem absoluten Pfad abrufen, z. B. aus " C:\Things\Folder " zu "Ordner"

5voto

Hand-E-Food Punkte 11694

Es ist zwar ein wenig umständlich, aber Sie können es verwenden:

Set NasPath=C:\Things\Folder
Set NasFolder=%NasPath%
:GetFolder
Set GetFolderTemp=%NasFolder:*\=%
If Not %GetFolderTemp%==%NasFolder% (
    Set NasFolder=%GetFolderTemp%
    Goto :GetFolder
)
Echo NasPath  =%NasPath%
Echo NasFolder=%NasFolder%
Exit /B

Was auch immer Sie tun, setzen Sie keine Anführungszeichen um einen Teil der Set NasPath=... Erklärung. Verwenden Sie Anführungszeichen auf diese Weise:

Set FromPath=C:\Program Files\Blah
Set NasPath=C:\Things\Folder
RoboCopy "%FromPath%" "%NasPath%"

Verwenden Sie auf diese Weise keine Anführungszeichen:

Set FromPath="C:\Program Files\Blah"
Set NasPath="C:\Things\Folder"
RoboCopy %FromPath% %NasPath%

2voto

David Punkte 21

Um kein Platzproblem zu haben, schlage ich diesen Code vor:

Set NasPath=C:\Things\My Space\Folder
Set GetFolderTemp=%NasPath%
:GetFolder
FOR /F "tokens=1,* delims=\" %%1 IN ("%GetFolderTemp%") do (
set NasFolder=%%1
set GetFolderTemp=%%2
)
if not "a%GetFolderTemp%"=="a" goto :GetFolder

echo %NasFolder%

0voto

Bo Real Punkte 126

Angenommen, C:\Program Files\Mickey\Mouse -ähnlichen Pfaden (ohne Anführungszeichen), könnten Sie auch folgenden Code verwenden:

setlocal EnableDelayedExpansion

set path=C:\Program Files\Microsoft\Mickey\Mouse
:shift
for /f "tokens=1* delims=\/" %%i in ( "!path!" ) do (
    set folder=%%i
    set path=%%j
)
if not [!path!] == [] goto :shift

echo folder: !folder!

endlocal

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X