首页 > 解决方案 > 为每个 /dir 结果分配数字并要求输入数字

问题描述

第一次在这里发帖。我正在编写一个小脚本,其中一个部分是列出网络中所选计算机的所有用户。我希望能够选择任何用户而不必写下全名。

%PCNAME% 之前在用户输入中定义。

/dir \\PCNAME\Users

这会列出 %PCNAME% 上的每个用户,只要它在网络中。

示例输出:

29.12.2020  10:35    <DIR>          .
29.12.2020  10:35    <DIR>          ..
21.12.2020  12:42    <DIR>          Public
01.03.2021  08:02    <DIR>          User1
16.02.2021  15:21    <DIR>          User2
24.02.2021  13:14    <DIR>          User3
               0 Datei(en),              0 Bytes
               6 Verzeichnis(se), 178.603.126.784 Bytes frei

我想让它看起来像这样:

[1] 29.12.2020  10:35    <DIR>          .
[2] 29.12.2020  10:35    <DIR>          ..
[3] 21.12.2020  12:42    <DIR>          Public
[4] 01.03.2021  08:02    <DIR>          User1
[5] 16.02.2021  15:21    <DIR>          User2
[6] 24.02.2021  13:14    <DIR>          User3

现在我想做一个简单的

set /p User="Number of the User: ":

因此,您只需输入例如数字 5,然后用户将是“user2”

提前致谢

标签: batch-file

解决方案


@ECHO OFF
SETLOCAL
FOR /f "delims=" %%b IN ('dir \users ^|find "<DIR>" ^|find /v " ." ^|find /v /n ""') DO ECHO %%b&FOR /f "delims=[]" %%c IN ("%%b") DO SET maxchoices=%%c
ECHO select 1..%maxchoices%
GOTO :EOF

第一个过滤器只允许包含的行<DIR>,第二个排除包含 .的行,第三个将 [sequencenumber] 添加到该行。

maxchoices然后设置为最后一个序列号。

(我使用\users是因为这适合我的测试设置)

SO上有很多关于如何执行选择的文章。请参阅menu或上的文章choice


推荐阅读