2016-07-15 3 views
0

ユーザーのコンピュータの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 /削除すると問題なく動作します!!!誰かが答えを持っていない限り、そうするべきです。

+2

ここにbashが入りますか?そしてヒント:ここで2番目のコードサンプルの構文強調を鋭く見て、あなたの問題に対する答えを見つけ出すかもしれません... – ths

+0

私は間違いをしたので、バッチ(恥ずかしい)私は別のものを試していたmkdirの後に%computername%を追加しましたが、私はそれを別のものにします。これまでのところ、私はまだ混乱しています。 –

+1

[バッチファイルのデバッグ](http://www.robvanderwoude.com/battech_debugging.php) – DavidPostill

答えて

0

私の人生で見た奇妙なもの。作業スクリプトからtxtファイルをコピーして名前を変更すると、2行目が機能します。何!!!!??意味をなさないが、私はそれが私が望むように動作するようにした。

0

あなたはにコピーします。まだお読みください"c:\newtemp\delete_user_admin\%computername%.txt"

これらは同じではありません。

+0

ありがとう、ここに行を間違えて書きました。間違いを編集し、.batファイルにどのように表示されているかを確認します。それを見て心ですか? –

+0

あなたのスクリプトはどちらもうまくいきません。彼らは '' net use'を実行する行に ')'がありません。ソーススクリプトからコピー&ペーストをするのが最良です。そうしないと、誤植を追跡し続けます。 –

+0

あなたは正しいです、私はそれを入力するのではなく正しい行をコピーして貼り付けます!申し訳ありません、まだこのフォーラムを学んでいます! –

関連する問題