2017-10-13 74 views
0

有没有办法通过查找返回文件和/或文件夹的绝对路径?CMD Windows查找/搜索并返回绝对路径

假设FILENAME.TXT在C:\测试

set file=filename.txt 

dir %file% /s 

在现在返回C:\测试,第6行,但我想它是什么返回绝对路径

C:\测试\ filename.txt并将其设置为下次使用的变量。

谢谢

+0

'dir/S/B'返回完整路径... – aschipfl

+0

@aschipfl thx它是我想要的。顺便说一下,你知道如何将dir的值传递给1行中的下一个命令?现在我尝试'dir filename/s/b |我不知道如何绕过返回德尔。 –

回答

1

只需将/B选项添加到dir/S命令行,所以它返回完整的绝对路径。

抓住这个命令行的输出,使用for /F loop

for /F "delims=" %I in ('dir /S /B "filename.txt"') do rem/ Do something with `%I`... 

例如,删除匹配的文件,这样做:

for /F "delims=" %I in ('dir /S /B "filename.txt"') do del "%I" 

请注意,您必须将%翻番此代码在批处理文件中使用的标志,因此%I变为%%I

+0

酷我想要的。现在我尝试无限循环。我得到错误的/ f定界基本循环':循环和goto循环'我怎么能实现这个没有饥饿的资源? –

+0

它的工作人! thx –

+0

@ aschipfl sory如果我打断你的话。我怎样才能从绝对路径1下来的文件夹?让我们说C:\ test \ boo \ filename.txt。我只想得到C:\ test \ boo \。 ('dir/S/B%file&')do findstr,%file%'我的尝试是与find str但是像错误的东西一样。' set file = filename 'for/F“delims =”% ,“%% I”' 从上面的代码我inialize文件名到变量文件,并使用findstr替换为3参数。 1.文件名。 2.改为空。 3.从目录输出。稍后与rmdir一起使用。 thx –

0

假设你得到的文件名作为第一个参数一个批处理脚本,批处理脚本可能看起来像这样:

set file=%~dpnx1 
echo %file% 

调用脚本将返回的绝对路径到给定的文件,你可以使用它作为一个变量向前。 这个更多细节,可以在后发现:Resolve absolute path from relative path and/or file name

+0

thx回复。我现在得到答案。 –

+0

你为什么不喜欢'%〜f1'? ;-) – aschipfl

+0

我从以前的答案中得到答案。我不知道他为什么删除他的答案。它只是一个简单的选项,我没有在目录中提到。/b –