ユーザーのコンピュータの40の後に40の.txtファイルがあり、各.txtファイルにはユーザーのADアカウントが含まれています。次のバットスクリプトは、広告アカウントを管理者グループに注入する際に効果的です。作成したバッチファイルに問題があります。ユーザーは正しく追加されますが削除されません
mkdir "c:\newtemp\a_accounts"
xcopy "\\SERVERNAME\FOLDER\a_accounts\%computername%.txt" "c:\newtemp\a_accounts"
for /f "usebackq" %%X in ("c:\newtest\a_accounts\delete\%computername%.txt") do (NET LOCALGROUP ADMINISTRATORS %%X /add)
ただし、新しいバットファイルを作成して/ add// addからスイッチを元に戻すと、新しいスクリプトでは機能しません。上記のスクリプトを使用して、ローカル管理グループから他のユーザーを削除する必要があります。
mkdir "c:\newtemp\delete_user_admin"
xcopy "\\SERVERNAME\FOLDER\delete_user_admin\%computername%.txt" "c:\newtemp\delete_user_admin"
For /F "usebackq" %%G IN ("c:\newtemp\delete_user_admin\%computername%.txt") DO (NET LOCALGROUP ADMINISTRATORS %%G /delete)
for/fを実行すると、何もしません(エラーもなく、行が表示されません)。それは私がなぜこのように行動しているのか唖然としています。変数をXから別の文字に変更しようとしましたが、これは何も変わりません。これがなぜ起こっているのか?
これは、変数がファイル内のユーザー名を取得していないようです。 2番目の%% Gを広告のユーザー名に置き換えてスクリプトを実行し、ローカル管理者からアカウントを削除しました。今、for/fが動作しない理由を理解しなければなりません。私は正しい行を使っています。
2016年7月17日
これが機能しない理由うん、私は完全に踏みつけるています。両方の行を.batにまとめて実行すると、次のようになります。
これは問題なく動作します。私は、フォルダを変更した場合
for /f "usebackq" %%X in ("c:\newtemp\a_accounts\%computername%.txt") do (NET LOCALGROUP ADMINISTRATORS %%X /add)
しかし、それが壊れる(エラーありませんちょうどそれのように見えるが、何も行を実行していないが、何も発生しないし。私は、.batファイルや編集に行けば
for /f "usebackq" %%X in ("c:\newtemp\a_accounts2\%computername%.txt") do (NET LOCALGROUP ADMINISTRATORS %%X /delete)
2番目の行は最初のフォルダ "a_accounts"を指し、/ addを/ add /削除すると問題なく動作します!!!誰かが答えを持っていない限り、そうするべきです。
ここにbashが入りますか?そしてヒント:ここで2番目のコードサンプルの構文強調を鋭く見て、あなたの問題に対する答えを見つけ出すかもしれません... – ths
私は間違いをしたので、バッチ(恥ずかしい)私は別のものを試していたmkdirの後に%computername%を追加しましたが、私はそれを別のものにします。これまでのところ、私はまだ混乱しています。 –
[バッチファイルのデバッグ](http://www.robvanderwoude.com/battech_debugging.php) – DavidPostill