【问题标题】:Windows Batch matching a stringWindows 批处理匹配字符串
【发布时间】:2020-07-31 12:11:12
【问题描述】:

最后我想匹配一个字符串并使用该值。

我有很多名为 TEST123456 的文件夹,在我的计算机上的不同位置有不同的编号。 使用dir TEST?????? /s /b /a:d > folders.txt 我可以得到一个看起来像这样的文件:

C:/folder1/folder2/TEST123456
C:/folder1/folder2/TEST654321
C:/folder2/TEST246810

现在这个列表将非常大,所以我希望它按数字排序。我想将此文件更改为:

TEST123456C:/folder1/folder2/TEST123456
TEST654321C:/folder1/folder2/TEST654321
TEST246810C:/folder2/TEST246810

在文本文件中插入行时,最好但不是必须已经这样做。

现在我尝试使用findstr TEST...... folders.txt,但它会打印整行,我只想要匹配的字符串。我是 Windows Batch 的初学者,所以我认为创建我想要的内容应该相对容易。

【问题讨论】:

  • sorted by the number 是什么意思?
  • 所以困难的是我想将 TEST123456 提取到前面(并将其保留在最后)。完成后,我可以使用命令 sort 轻松对其进行排序,然后非常快速地搜索列表。

标签: windows batch-file command-line command


【解决方案1】:

您可以使用FOR /D 循环浏览文件夹:

@echo off
>folders.txt (
for /D /R %%A in (test??????) do echo %%~nxA%%A
)

【讨论】:

  • 谢谢!这几乎可以工作!我不擅长这种语言,所以也许你也可以帮我把它变成这样,只是%%~nxA(据我所知是文件夹名称)限制为 6 个字符。有时文件夹的名称是TEST123456, this folder is for testing,然后我只想提取前 6 个字符。我没有在我最初的问题中包含这个,因为我认为我可以自己做,但事实证明我还有很多东西要学!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
相关资源
最近更新 更多