我有这个代码,但它似乎没有工作;我无法理解为什么:
set dir = %cd%
:char
set dir=%dir:~0,-1%
IF %dir:~-1%=="\" ( goto end ) else ( goto char )
:end
我把它缩小到了
行 set dir=%dir:~0,-1%
似乎是将dir
设置为~0,-1
,但这没有意义,因为我在另一个程序中使用完全相同的行,并且它工作正常。
BTW:此代码旨在从当前目录路径中删除最后一个文件夹名称。
提前感谢您的帮助。
答案 0 :(得分:0)
@ECHO Off
SETLOCAL
set "dir=%cd%"
:char
set dir=%dir:~0,-1%
IF "%dir:~-1%"=="\" ( goto end ) else ( goto char )
:end
SET di
FOR /f %%a IN ("%cd%") DO SET "dir=%%~dpa"
SET di
GOTO :EOF
set
识别分配两侧的 Space ,因此您将当前目录分配给" dir Space "并且dir
根本没有设置。
您的if
命令缺少第一个参数周围的引号。
这是一种更简单的方法......
答案 1 :(得分:0)
要从给定路径中删除最后一个文件夹名称,请使用简单的for
循环和~dp
扩展(请参阅for /?
):
set "FOLDER=%CD%"
for /D %%D in ("%FOLDER%") do (
set "PARENT=%%~dpD"
)
echo Last folder removed: %PARENT%
不需要逐个字符地分割并且正在搜索\
。
注意:强>
我建议不要使用变量名dir
来避免混淆,因为有一个同名的内部命令。