我的问题是在批处理文件中使用select参数启动explorer.exe
。我用这个:
if exist "!SATIR!\!SATIR:~20,-23!.mp4" (explorer.exe /select, "!SATIR!\!SATIR:~20,-23!.mp4") else (explorer.exe /select, "!SATIR!\!SATIR:~20,-23!.mkv")
它可以工作,但我不想依赖于特定的文件扩展名。我想对所有扩展使用像通配符这样的东西(avi,wmv等)。
使用类似:if exist "!SATIR!\!SATIR:~20,-23!.*" explorer.exe /select, "!SATIR!\!SATIR:~20,-23!.*"
的内容不起作用。在explorer.exe
部分失败。到目前为止,我一无所获。有可能吗?
PS。 !SATIR!
变量包含那些mp4和mkv文件的本地地址。它类似于:F:\Movies\000y.001y\The.Lord.of.the.Rings.The.Return.of.the.King.(2003){0167260}[00087]
PS。 !SATIR:~20,-23! EQU The.Lord.of.the.Rings.The.Return.of.the.King
答案 0 :(得分:0)
Windows资源管理器不支持选项/select
的通配符,因为此选项需要目录的路径或文件的名称(根据root
的用法使用或不使用路径,或名称对于Windows 95/98/Me/NT4,Windows 2000/NT4,Windows XP(以及更高版本的Windows版本),请参阅Windows资源管理器的命令行选项页面。使用此命令行选项无法选择多个文件据我所知。
但批处理文件仍然可以在测试存在时使用通配符作为文件扩展名,然后启动Windows资源管理器,其文件的全名首先与文件规范匹配。
以下是一个示例批处理文件:
@echo off
set SATIR=F:\Movies\000y.001y\The.Lord.of.the.Rings.The.Return.of.the.King.(2003){0167260}[00087]
set FILESPEC=%SATIR:~20,-23%.*
if exist "%SATIR%\%FILESPEC%" (
for %%f in ("%SATIR%\%FILESPEC%") do (
%windir%\explorer.exe /select,"%%f"
goto :LoopExit
)
)
:LoopExit
set FILESPEC=
set SATIR=
嗯,if
条件在这里或多或少没用。下面的批处理文件的行为是相同的。
@echo off
set SATIR=F:\Movies\000y.001y\The.Lord.of.the.Rings.The.Return.of.the.King.(2003){0167260}[00087]
set FILESPEC=%SATIR:~20,-23%.*
for %%f in ("%SATIR%\%FILESPEC%") do (
%windir%\explorer.exe /select,"%%f"
goto :LoopExit
)
:LoopExit
set FILESPEC=
set SATIR=