批量循环通过C:\ Users使用变量设置为通配符

时间:2016-11-07 19:02:10

标签: loops batch-file for-loop find wildcard

我有一个网络中的计算机名称列表(hosts.txt),只有网络上的某些用户需要在他们的PC上安装一些软件。我总是知道他们的名字不是登录细节。

E.g

我知道用户有一个Adam Mint的名字,我想知道他在局域网上使用了什么计算机,我不知道他的登录但通过命名约定确实知道他的日志是 amint2 mintya amint 等。

因此,我希望使用* mint的外卡来搜索C:\ users的计算机列表,以查找他登录过的计算机。从那里我知道计算机等需要为该用户安装一些软件。我试图把一些代码放在一起,但我错过了一些东西。有人可以告诉我哪里出错了吗?感谢

set /p search=Input search string...

for /f "usebackq tokens=*" %%A in ("%~dp0hosts.txt") do (
if exist "\\%%A\C$\Users\*%search%*" echo "%search% string was found in users folder on %%A"  
)

更新到目前为止工作得很好,帮助表示赞赏。我想知道我是否可以进一步加强它。我发现同一个用户可能已登录到许多PC,所以我手动搜索了文件夹的修改日期,看看哪个是最新的(花了很多年);通常识别正在使用的实际PC。我是否可以添加一些代码来扩展\ %% A \ C $ \ Users *%search%*“部分以报告完整路径,然后回显配置文件文件夹的修改日期。

例如,分钟的输出是......

"amint string was found in users folder on PCSG-098763"
"amint string was found in users folder on PCSG-098463"
"amint string was found in users folder on PCSG-098763"
"amint string was found in users folder on PCSG-098793"
"amint string was found in users folder on PCSG-098713"
"amint string was found in users folder on PCSG-098703"

..实际上可能包括

"amint string was found in users folder on PCSG-098763 last used 09/11/16"
"amint string was found in users folder on PCSG-098463 last used 09/11/15"
"amint string was found in users folder on PCSG-098763 last used 12/02/14"
"amint string was found in users folder on PCSG-098793 last used 01/01/14"
"amint string was found in users folder on PCSG-098713 last used 01/11/13"
"amint string was found in users folder on PCSG-098703 last used 15/11/12"
谢谢......

1 个答案:

答案 0 :(得分:0)

set /p search=Input search string... 

for /f "usebackq tokens=*" %%A in ("%~dp0hosts.txt") do ( if exist "\\%%A\C$\Users\*%search%*" echo "%search% string was found in users folder on %%A" )

正如这里所建议的那样,是评论后的正确答案。