我如何搜索文件,并在找到时将文件路径设置为批处理脚本中的变量

时间:2017-03-15 15:51:20

标签: powershell batch-file

我正在尝试创建一个批处理文件,该文件将运行并打开一个Powershell脚本然后运行。

这是我到目前为止所拥有的

@echo off
for /r C:\folder %%a in (*) do if "%%~nxa"=="2WNRN4VMS2.txt" set p=%%~dpnxa
if defined p (
echo %p%
) else (
echo File not found
Pause
)
Powershell.exe -Command "& '%p%'"
exit

1 个答案:

答案 0 :(得分:0)

使用命令 DIR 非常简单,可以在文件夹C:\folder及其所有子文件夹中递归搜索文件,并命令 FOR 分配驱动器和路径找到的文件到环境变量:

@echo off
for /F "delims=" %%I in ('dir /A-D /B /S "C:\folder\2WNRN4VMS2.txt" 2^>nul') do set "FilePath=%%~dpI" & goto FoundFile
echo File not found
pause
goto :EOF

:FoundFile
Powershell.exe -Command "& '%FilePath%'"

请注意,分配给环境变量FilePath的字符串以反斜杠结尾。如果应该在没有反斜杠的情况下传递文件的路径,请在PowerShell命令行%FilePath:~0,-1%中使用。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • dir /?
  • echo /?
  • for /?
  • goto /?
  • pause /?
  • set /?