在给定目录中找到文件(不是文件夹)有简单的command,其工作原理如下:
where /r GroupManagementAppServer test.js
返回文件夹test.js
中名为GroupManagementAppServer
的所有文件。
但是,此命令因其他两个用例而失败:
var/www/html/project/js/test.js
,这是GroupManagementAppServer
中的某个地方)js
)我需要一些命令行逻辑来处理所有这些用例,这样我就可以完成我的逻辑来验证两个参数,这样我就可以完成我的例程,这个例程将作为我的“业务端”。码。 (我正在编写一个命令行脚本,为我项目中的代码文件生成markdown文件。我已经坚持了几天这个任务,现在是时候继续完成并完成一些真正的工作了。)
答案 0 :(得分:0)
where
命令只能搜索文件,但不能搜索目录;改为使用dir
,可以搜索这两个文件(使用选项/A:-D
)和目录(使用选项/A:D
)。
dir /S
可用于递归搜索与给定名称或模式匹配的项目,但不能用于搜索其相对路径与给定路径匹配的项目。但是,您可以使用findstr
过滤dir /S
的输出,如下所示:
rem // Define constants here:
set "RootDir=GroupManagementAppServer"
set "RelPath=var\www\html\project\js\test.js"
rem /* Let `dir` return all files in full tree, then let `findstr` filter for matches;
rem each `\` needs to be doubled as `\` is used as escape character by `findstr`: */
dir /B /S /A:-D "%RootDir%\*" | findstr /I /E /C:"\\%RelPath:\=\\%"
实际上我不太清楚你的意思,但我想你希望用户能够只输入文件{{js
)的直接父目录的名称或相对路径。 1}}。我不知道你想如何区分文件和目录,除非我们可以假设目录名不包含扩展名。
假设我的假设是正确的,并且用户输入不包含任何通配符(test.js
,?
),您可以使用*
循环来确定是否存在是一个扩展名:
for