2

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

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

通过使用某种变量,我想让 findstr 拉入每个用户,以便我可以获得所有用户目录的列表。

最终结果将如下所示:

dir C:\users\$variableforusers\AppData\Roaming > C:\directorylist.txt

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

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

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

提前感谢大家的帮助!

4

1 回答 1

1

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

您可以使用以下语法为每个子目录执行 a dirof :AppData\RoamingC:\Users

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

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

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

for /f "tokens=3" %A in ('reg query "HKLM\Software\Microsoft\WindowsN T\CurrentVersion\ProfileList" /s /v ProfileImagePath ^| find "REG_EXPAND_SZ"') do @dir %A\AppData\Roaming

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

于 2012-12-31T14:15:25.217 回答