微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在batch file中获得相同的dirname?

我想从.bat文件获取文件的父目录。 所以,给定一个variables设置为"C:MyDirMyFile.txt" ,我想获得"C:MyDir" 。 换句话说,在典型的UNIX环境中,相当于dirname()function。 这可能吗?

webapp被黑了,但是插入了什么确切的代码? 回声(gzinflate(BASE64_DECODE(“…”)

命令行:监视日志文件并将数据添加数据库

安装Python时出错

如何找出谁运行runas应用程序?

命令Python2找不到

for %%F in (%filename%) do set dirname=%%~dpF

这会将%dirname%设置为存储在%filename%的驱动器和文件名的目录。

但是请注意包含空格的文件名。 要么他们必须设置与周围的报价:

set filename="C:MyDirMyFile with space.txt"

或者你必须在for循环中引用引号:

for %%F in ("%filename%") do set dirname=%%~dpF

两种方法都可以,两者同时不会:-)

如果因为什么原因你不能使用FOR(没有命令扩展等),你可能会逃脱.. hack:

set file=c:dirfile.txt set dir=%file%..

for循环的问题在于,它在字符串的末尾留下了尾部的。 如果要多次获取dirname,则会导致问题。 也许你需要获取包含该文件的目录的祖父目录的名称,而不仅仅是父目录。 第二次使用for循环技术将删除,并不会得到祖父目录。

这是你不能简单地做到以下几点。

set filename=c:123t.txt for %%F in ("%filename%") do set dirname=%%~dpF for %%F in ("%dirname%") do set dirname=%%~dpF

这将设置dirname为“c: 1 2 3”,而不是“c: 1 2”。

以下功能通过删除尾部来解决这个问题。

:dirname file varName setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION SET _dir=%~dp1 SET _dir=%_dir:~0,-1% endlocal & set %2=%_dir% GOTO :EOF

它被称为如下。

set filename=c:123t.txt call :dirname "%filename%" _dirname call :dirname "%_dirname%" _dirname

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐