找到所有用户,将其作为变量从cmd中提取appdata目录列表



我正在尝试构建一个脚本,该脚本将提取用户列表,获取每个用户的名称,然后为每个appdata文件夹创建目录列表。

到目前为止,我认为我可以使用net user > C:userlist.txt来创建用户列表,我真正的问题是获取用户名并将其放入下一个命令中。

通过使用某种变量,我希望每个用户都有findstr pull,这样我就可以获得所有用户目录的列表。

最终结果看起来像这样:

dir C:users$variableforusersAppDataRoaming > C:directorylist.txt

我希望能够为每个用户的appdata目录运行这个命令,所以这个命令需要根据最终机器的用户数量来重复。

这将从本地系统帐户运行,因此%appdata%将不起作用,因为它只为您提供当前登录用户的appdata文件夹。

如果可能的话,我希望目录列表全部转储到一个文件中,否则我将不得不引入一个变量来检查多个文件的结果。

提前感谢大家的帮助!

我认为您不应该使用用户名来获取用户配置文件目录的路径。目录名可以不同于用户名-例如,如果在创建配置文件后更改了用户名hsa,或者存在用户名冲突(本地用户的用户名与域用户的用户名相同)。

您可以使用以下语法为C:Users的每个子目录执行AppDataRoamingdir

for /d %A in (C:Users*) do if exist %AAppDataRoaming dir %AAppDataRoaming

但是此解决方案将再次省略存储在C:\Users之外的任何用户配置文件。

要为每个用户配置文件创建dirAppDataRoaming目录,可以从注册表中获取用户配置文件的路径:

for /f "tokens=3" %A in ('reg query "HKLMSoftwareMicrosoftWindowsN TCurrentVersionProfileList" /s /v ProfileImagePath ^| find "REG_EXPAND_SZ"') do @dir %AAppDataRoaming

如果要在脚本中使用这些命令,请使用双百分号(%%a)。要了解有关for命令的更多信息,请键入for /?

最新更新