Windows 正在查找.bat文件的文件夹名

Windows 正在查找.bat文件的文件夹名,windows,batch-file,Windows,Batch File,我需要找到我正在执行的批处理文件的文件夹名。所有其他方法都为我提供了完整的路径。 我只需要父文件夹的名称。另外,其他方法使用循环,这对于我的需求来说是相当冗长和冗长的。 是否有任何方法可以通过%参数(或其组合)直接找到父文件夹名称?试试看 echo %~dp0 在您的bat文件中。%0是批处理文件的名称~dp为您提供指定参数的驱动器和路径。Try echo %~dp0 在您的bat文件中。%0是批处理文件的名称~dp为您提供指定参数的驱动器和路径。确实没有一种简单的方法可以做到这一点。我

我需要找到我正在执行的批处理文件的文件夹名。所有其他方法都为我提供了完整的路径。 我只需要父文件夹的名称。另外,其他方法使用循环,这对于我的需求来说是相当冗长和冗长的。 是否有任何方法可以通过%参数(或其组合)直接找到父文件夹名称?

试试看

echo %~dp0 
在您的bat文件中。%0是批处理文件的名称~dp为您提供指定参数的驱动器和路径。

Try

echo %~dp0 

在您的bat文件中。%0是批处理文件的名称~dp为您提供指定参数的驱动器和路径。

确实没有一种简单的方法可以做到这一点。我知道你提到过你不想要一个冗长的循环方法,所以这里有一个简短的循环方法:

for %%D in (.) do @echo %%~nD
请注意,此代码仅在批处理文件中工作。除此之外,您应该使用%而不是%%


你应该退房。他在自己的网站上有很多关于DOS脚本编写的好信息。

要做到这一点真的不是一个简单的方法。我知道你提到过你不想要一个冗长的循环方法,所以这里有一个简短的循环方法:

for %%D in (.) do @echo %%~nD
请注意,此代码仅在批处理文件中工作。除此之外,您应该使用%而不是%%


你应该退房。他在他的网站上有很多关于DOS脚本的好信息。

你的问题的直接答案是“不”。没有直接方法只使用扩展修饰符而不使用FOR循环或调用

问题中引用的线程几乎包含了您需要的所有内容

这里有两种优化技术,它们与已经发布的技术非常相似。方法1应该是最快的:

编辑-我通过删除子字符串操作进行了进一步优化。
Edit2-I用simple代替/F


你的问题的直接答案是“不”。没有直接方法只使用扩展修饰符而不使用FOR循环或调用

问题中引用的线程几乎包含了您需要的所有内容

这里有两种优化技术,它们与已经发布的技术非常相似。方法1应该是最快的:

编辑-我通过删除子字符串操作进行了进一步优化。
Edit2-I用simple代替/F


不,那是以前提到过的。在这样做的同时,我得到了整个路径。我需要的只是父文件夹。例如:C:\myprogram\bin\myfile.bat=>输出前面提到的binNo。在这样做的同时,我得到了整个路径。我需要的只是父文件夹。例如:C:\myprogram\bin\myfile.bat=>outputs bin该问题的可能重复项具有随迭代提供的可接受答案。我正在寻找一个参数/任何其他方法,而不是第二个答案。(被接受的答案通常不是唯一有用的信息。)我已经查找了所有的帖子/答案(你提到的第二个答案也出现在这里)。我会重申我的疑问;我需要的是父文件夹,而不是bat文件的父路径。该问题的可能副本具有迭代提供的可接受答案。我正在寻找一个参数/任何其他方法,而不是第二个答案。(被接受的答案通常不是唯一有用的信息。)我已经查找了所有的帖子/答案(你提到的第二个答案也出现在这里)。我会重申我的疑问;我需要的是父文件夹,而不是bat文件的父路径感谢您的澄清。第二种方法对我的情况更有用。@SumitBisht-我说得太快了。我通过将
\.
附加到完整路径,成功地消除了对子字符串操作的需要。答案已更新。@SumitBisht-也将/F更改为简单的FORThanks,以澄清这一点。第二种方法对我的情况更有用。@SumitBisht-我说得太快了。我通过将
\.
附加到完整路径,成功地消除了对子字符串操作的需要。答案已更新。@SumitBisht-也将/F更改为简单的FOR