2

ユーザーのリストを取得し、各ユーザーの名前を取得してから、各appdataフォルダーのディレクトリリストを作成するスクリプトを作成しようとしています。

これまでのところ、を使用してユーザーのリストを作成できると考えていnet user > C:\userlist.txtますが、私の本当の問題は、ユーザーの名前を取得して次のコマンドに配置することです。

ある種の変数を使用して、すべてのユーザーのディレクトリのリストを取得できるように、各ユーザーにfindstrをプルさせたいと思います。

最終結果は次のようになります。

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

このコマンドを各ユーザーのappdataディレクトリに対して実行できるようにしたいので、このコマンドは、エンドマシンのユーザー数に基づいて繰り返す必要があります。

これはローカルシステムアカウントから実行されるため、%appdata%は、現在ログインしているユーザーのappdataフォルダーのみを提供するため機能しません。

可能であれば、ディレクトリリストをすべて1つのファイルにダンプしたいのですが、そうでない場合は、複数のファイルで結果を確認するための変数を導入する必要があります。

助けてくれてありがとう!

4

1 に答える 1

1

ユーザーのプロファイルディレクトリへのパスを取得するためにユーザーの名前を使用するべきではないと思います。ディレクトリ名はユーザー名とは異なる場合があります。たとえば、プロファイルの作成後にユーザー名hsaが変更された場合や、ユーザー名の競合がある場合(ローカルユーザーはドメインユーザーと同じユーザー名を持っている場合)。

次の構文を使用して、のサブディレクトリごとdirにのを実行できます。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 に答える