【问题标题】:Batch File - Delimiter for multiple spaces批处理文件 - 多个空格的分隔符
【发布时间】:2014-07-31 23:00:43
【问题描述】:

我正在尝试将每个标记从我拥有的 txt 文档中分离出来,并回显每个单词。问题是每个令牌之间有不同数量的空格。例如:

管理员____________用户 1________________来宾

每个“_”代表一个空格,例如。管理员和用户 1 之间有 12 个空格,用户 1 和用户之间有 16 个空格。

如果出现以下情况,我如何使用批处理脚本分别回显其中的每一个:

1)文件是“C:\Usernames.txt” 2)它们都在txt文件的第一行

我试过了:

 FOR /F "delims=" %A IN (C:\Usernames.txt) DO ECHO %A

我得到的只是“管理员”的回声。任何帮助是极大的赞赏。谢谢!

编辑:

通过在 for 循环中抛出一个 for 循环,我能够更接近一点。我的代码是

 FOR /F "delims=" %A IN (C:\Usernames.txt) DO FOR %B IN (%A) DO ECHO %B

这让我可以将它分成 4 个部分,但我需要三个。我得到了:

Administrator, User, 1, Guest

我怎样才能让用户和 1 加入成为用户 1?

【问题讨论】:

  • 线条是预定的还是随机的文字?
  • 我实际上是将它从“net user”命令输出到一个文本文件中。然后从该文本文件中,我将包含用户的那一行提取到另一个文本文件中。现在我到了这一点,我需要向计算机上的每个用户回显(最好设置一个变量)。因此,您的问题是随机的,因为每台计算机的用户都会有所不同。

标签: batch-file for-loop delimiter


【解决方案1】:

这可能有效:它依赖于每个用户名之间至少有两个空格,并且没有用户名将包含两个连续的空格。

net user |find "  "|repl " {2,50}" "\r\n" x

这使用了一个名为 repl.bat 的辅助批处理文件(由 dbenham 提供)- 从以下位置下载:https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

将repl.bat 放在与批处理文件相同的文件夹或路径上的文件夹中。

【讨论】:

  • 这很有帮助。如果我的用户名带有空格,我该如何使用它?你说只要没有两个连续的空格,它似乎就可以工作,但我的用户名只有一个,它不起作用。它的打印输出 - 管理员、用户、1、访客
  • 我更改了正则表达式 - 它在这里的有限测试中有效。
  • 完美。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
相关资源
最近更新 更多