批处理:需要在脚本目录(%~dp0)中选择具有特定文件扩展名的文件

时间:2018-01-25 10:48:34

标签: batch-file

您知道吗,我不是编写批处理脚本的向导,我还不了解很多关于它们的事情。

我需要使用具有特定文件扩展名的批处理脚本文件夹的路径选择文件。

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

echo select vdisk file="%~dp0Test.vhd"

我希望能够使用批处理脚本的路径选择此文件,但也不需要文件名供我选择,而只是使用文件扩展名类型以便我可以更改文件(使用相同的文件)扩展类型)但批处理脚本仍然会选择它。

我希望这是有道理的......

2 个答案:

答案 0 :(得分:2)

for %%a in ("%~dp0*.vhd") do echo select vdisk file="%~dp0%%a"

注意:如果有多个匹配文件,这将为每个文件执行命令(echo ...)。

答案 1 :(得分:0)

以下示例为您提供两全其美的优势。如果批处理文件旁边只有一个.vhd文件,则会根据需要自动选择该文件。如果有多个.vhd文件,您将看到一个选择菜单,以选择您需要的文件。

@Echo Off
If Exist "%~dp0*.vhd" (CD /D "%~dp0" 2>Nul) Else Exit /B
SetLocal EnableDelayedExpansion
For /F "Delims==" %%A In ('"(Set vhd[) 2>Nul"') Do Set "%%A="
Set "i=0"
For %%A In ("*.vhd") Do (Set /A i+=1 & Set "vhd[!i!]=%%~nA")
If %i% Equ 1 (Set "vhd[X]=%vhd[1]%") Else Call :Menu

Rem Example DiskPart commands using selected .vhd begin below
(   Echo select vdisk file="%~dp0%vhd[X]%.vhd"
    Echo attach vdisk)>"DPscript.txt"
DiskPart /s "DPScript.txt"
Rem Example DiskPart commands using selected .vhd end above

Exit /B

:Menu
For /L %%A In (1,1,%i%) Do (Echo %%A. !vhd[%%A]!)
Set /P "vhd[X]=Select a .vhd from the above list: "
If Not Defined vhd[%vhd[X]%] (ClS & GoTo Menu)
Set "vhd[X]=!vhd[%vhd[X]%]!"