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"
Antworten
Zu viele Anzeigen?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%
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%
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