用于返回文件路径的批处理脚本

时间:2017-06-22 08:55:52

标签: windows batch-file cmd

我正在尝试编写一个代码,该代码将显示我定义的文件的路径。例如,我有两个文件

  1. d:\测试\ ExecuteScript.bat
  2. d:\ document.txt的
  3. 我希望在我的脚本中定义文件名“document.txt”,并返回“D:\ Test \ ExecuteScript.bat”。我也尝试了以下代码:

      

    for / r %% x in(* document.txt)do echo“%% x”

    但是,只有当document.txt位于文件夹内且ExecuteScript.bat位于文件夹之外时才有效,例如:

    1. d:\ ExecuteScript.bat
    2. d:\测试\ document.txt的
    3. 我搜索了很多在线解决方案,但其中很多要求我把C:\放在我不想要的代码前面。非常感谢,并为我糟糕的英语道歉。

1 个答案:

答案 0 :(得分:1)

要告诉for /R从哪里开始搜索文件,只需说明/R背后的路径:

for /R "D:\" %%x in ("*document.txt") do echo "%%~x"

如果您在搜索同一个驱动器上,以下就足够了:

for /R "\" %%x in ("*document.txt") do echo "%%~x"

以下是您在输入for时出现for /?帮助的摘录:

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

    Walks the directory tree rooted at [drive:]path, executing the FOR
    statement in each directory of the tree.  If no directory
    specification is specified after /R then the current directory is
    assumed.  If set is just a single period (.) character then it
    will just enumerate the directory tree.

如果您要在所有驱动器中搜索,可以执行以下操作:

rem // Loop through all drive letters:
for %%d in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    rem // Temporarily try to change to root of current drive:
    pushd "%%d:\" 2> nul && (
        rem // Drive found, so search it for matching files:
        for /R %%x in ("*document.txt") do echo "%%~x"
        popd
    )
)