通过 .bat 迭代目录中的特定文件

发布于 2025-01-06 10:19:42 字数 165 浏览 0 评论 0原文

我尝试创建 bat 文件以仅迭代目录中文件名以特定单词开头的文件。 例如:
公司名称.module1.exe
companyName.module2.dll

我知道如何迭代文件,但不知道如何检查其名称的特定条件。

I try to create bat file to iterate throuth only files in directory which file names begin with specific word.
For Example:
companyName.module1.exe
companyName.module2.dll

I know how to iterate files but don't know how to check their names for specific condition.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜空下最亮的亮点 2025-01-13 10:19:42

将以下内容添加到批处理文件中:

for /F "eol=: tokens=*" %%A in ('dir /A-D /B "companyName*"') do (echo %%~fA)

此脚本将回显当前工作目录中以companyName前缀开头的所有文件(仅限文件)。将 echo 替换为您想要执行的任何其他命令。

更新 1:为了在不同的目录中查找,您可以

for /F "eol=: tokens=*" %%A in ('dir /A-D /B "pathToLookIn/companyName*"') do (echo %%~fA)

pushd \ & cd "pathToLookIn" & (for /F "eol=: tokens=*" %%A in ('dir /A-D /B "companyName*"') do (echo %%~fA)) & popd

其中 pathToLookIn 是完全限定路径或相对路径。

更新 2:我更新了 for /F 循环来处理以 ; 开头的文件名,如 @dbenham 建议的那样。

Add the following to your batch file:

for /F "eol=: tokens=*" %%A in ('dir /A-D /B "companyName*"') do (echo %%~fA)

This script will echo all files (files only) that begin with companyName prefix in the current working directory. Replace echo with any other command or commands that you want to perform instead.

Update 1: In order to look in a different directory you can either

for /F "eol=: tokens=*" %%A in ('dir /A-D /B "pathToLookIn/companyName*"') do (echo %%~fA)

or

pushd \ & cd "pathToLookIn" & (for /F "eol=: tokens=*" %%A in ('dir /A-D /B "companyName*"') do (echo %%~fA)) & popd

Where pathToLookIn is a fully qualified or relative path.

Update 2: I've updated the for /F loop to handle file names that begin with ; as @dbenham suggested.

﹏半生如梦愿梦如真 2025-01-13 10:19:42

好吧,如果您知道如何迭代文件,那么只需使用该知识即可:

for %%f in (companyName*) do (
  ...
)

请注意,迭代 dir 的输出很容易出错,并且在许多情况下会破坏 Unicode 字符。由于 for 能够直接迭代,因此很少需要使用较差的选项。

Well, if you know how to iterate files, then just use that knowledge:

for %%f in (companyName*) do (
  ...
)

Note that iterating over the output of dir is error-prone and will mangle Unicode characters in many cases. Since for is capable of iteration directly there's rarely a need to use a inferior option.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文