知道文件路径,然后从 cmd 打开该文件

知道文件路径,然后从 cmd 打开该文件

dir我尝试使用以下方式查找文件路径:

cd C:\
dir test.vbs /s /p

它起作用了,并且显示了目录,但是我想在找到文件后自动打开它,所以我尝试了这个:

 where /r C:\Users *.vbs

C:\Users是我放置文件的地方,所以它显示文件路径,但它也显示其他路径。

所以我想使用这样的命令:

where /r C:\Users *.vbs

我如何找到一个文件然后将其放入我的命令中?

那么我最后想要的结果就是这样的:

start "File of a path that has been searched and funded"

答案1

如果您知道您只是在处理.vbs文件,则应该使用cscript或类似的。这是一个简单的 Windows 批处理脚本,它将循环遍历目录并执行所有目录:

@echo off

REM -- Check the directory where this script is located
set DIR_TO_CHECK=%~dp0
REM -- Great example from Strawberry Perl's portable shell launcher:
if not "" == "%DIR_TO_CHECK%" if #%DIR_TO_CHECK:~-1%# == #\# set DIR_TO_CHECK=%DIR_TO_CHECK:~0,-1%

set "FILE_PATTERN=%DIR_TO_CHECK%\*.vbs"
echo Checking directory: %DIR_TO_CHECK%

REM -- Make sure there is at least one file of this type before looping through a list
if exist "%FILE_PATTERN%" for /F "tokens=*" %%N in ('dir "%FILE_PATTERN%" /b') do (
echo Running: "%%N"
cscript //Nologo "%%N"
)

echo.
pause

假设每个脚本使用标准输出写入控制台:

Wscript.Echo "Output from A"

输出应类似于:

Checking directory: C:\Users\Documents\My Scripts
Running: "Script A.vbs"
Output from A
Running: "Script B.vbs"
Output from B

如果您想使用默认文件关联,并简单地打开文件,则可以使用start。此示例使用系统定义的编辑器盲目打开目录中的所有 Microsoft Word 文档:

set "FILE_PATTERN=%DIR_TO_CHECK%\*.docx"

REM -- Make sure there is at least one file of this type before looping through a list
if exist "%FILE_PATTERN%" for /F "tokens=*" %%N in ('dir "%FILE_PATTERN%" /b') do (
echo Opening: "%%N"
start "" "%%N"
)

一些重要说明:

  • 使用dir /b很重要。不要尝试使用其他会改变输出的参数(尽管对列表进行排序可能没问题)。
  • 您需要dir /bfor循环中使用单引号。有时它无需单引号也能正常工作,但如果您输入的内容包含空格或其他非字母字符,批处理脚本可能会在没有警告的情况下崩溃,您会想知道为什么无法对任何内容进行分类。
  • `tokens=* 很重要,同样适用于文件名中的非字母字符。有时您可以不用它,但如果您突然有一个带空格的文件名(例如,“New Text Document.txt”),以前运行良好的程序就会突然崩溃。
  • 始终使用双引号%%N(或%%A%%B或您选择的任何字母)。同样,空格。它们不必有问题,但如果您没有正确引用字符串,完美的程序将崩溃,并且在“New Text Document.txt”的情况下,可能会发出大量警告,例如“无法找到‘New’”、“无法找到‘Text’”、“无法找到‘Document.txt’”。
  • 你做不是需要指定%%N(或%%A%%B或您选择的任何字母)。但您应该否则,它很快就会让下一个人——或者六个月后的你——感到困惑。

该命令的文档for可以在这里找到:
https://ss64.com/nt/for.html
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/for
(嘿,甚至微软的文档中也有一些很好的建议!)

相关内容