如何在命令提示符中获取父文件夹的名称?
我在 Windows 命令行中并希望将父文件夹放在变量中。
假设当前目录是“C:\foo\bar”,如何获取值“bar”?
我期待类似“在 CD 中找到最后一个反斜杠,仅此而已”。
请不要引用 powershell;我想要普通的旧 Windows 命令行操作。
I'm in a Windows Command Line and want the parent folder in a variable.
Assuming current directory is "C:\foo\bar", how can I get the value "bar"?
I'm expecting something like a "find last backslash in CD and that's it".
And please, no powershell references; I want plain old Windows Command Line operations.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我的解决方案使用替换并且也适用于根目录:
My solution uses substitution and works for root directory as well:
这似乎获取当前目录名称,并将其存储在环境变量
bar
中:这是有效的,因为
%CD%
包含当前目录,并且%~n
将 for 循环的输出(循环一个值,%CD%
)剥离到“文件名”部分。(请注意,如果您在批处理文件中使用它,请改用
%%i
和%%~ni
。)但是,这不适用于驱动器的根目录,它会取消设置
bar
,因为%~ni
的计算结果为空。This appears to get the current directory name, and stores it in the environment variable
bar
:This works because
%CD%
contains the current directory, and%~n
strips the output of the for loop (looping for one value,%CD%
) to the 'file name' portion.(Note, if you're using this in a batch file, use
%%i
and%%~ni
instead.)This doesn't, however, work for the root directory of a drive, it will instead unset
bar
, as%~ni
will evaluate to nothing.@pmod 的答案(我缺少评论代表)可能适用于根目录,但如果名称中有空格则不起作用。
这是一个稍微改进的版本(在分割之前用 / 替换空格,然后在完成后反向替换)。
@pmod's answer (I lack the rep to comment) may work for root directories, but it doesn't work if there are spaces in the names.
Here's a slightly improved version (substituting / for space before splitting, then reverse substituting when finished).
Pmod 有一个更简洁的解决方案;我不确定我的是否适用于根文件夹。但我想我应该把它放在这里供人们查看。
Pmod has a neater solution; I'm not sure mine works for root folders. But I thought I'd include it here for people to see.