バッチスクリプトを使用してWindows 7マシンでホストされているすべての共有を削除しようとしています。Windowsシステムからすべてのネットワーク共有をバッチで削除する
コード
@echo off
REG QUERY HKLM\System\CurrentControlSet\Services\LanmanServer\Shares > %APPDATA%\shares.txt
findstr /I /V HKEY_LOCAL_MACHINE %APPDATA%\shares.txt | findstr /I /V HKLM >> %APPDATA%\shares2.txt
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=1" %%S in (%APPDATA%\shares2.txt) do (
set tempy=%%S
net share "!tempy!" /delete
)
ENDLOCAL
(実行後)shares.txt
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Shares
Test REG_MULTI_SZ CSCFlags=0\0MaxUses=4294967295\0Path=C:\Test\0Permissions=0\0Remark=\0ShareName=Docs\0Type=0
Sp aces REG_MULTI_SZ CSCFlags=0\0MaxUses=4294967295\0Path=C:\Test\0Permissions=0\0Remark=\0ShareName=Sp aces\0Type=0
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Shares\Security
shares2.txt(実行後)
Test REG_MULTI_SZ CSCFlags=0\0MaxUses=4294967295\0Path=C:\Test\0Permissions=0\0Remark=\0ShareName=Docs\0Type=0
Sp aces REG_MULTI_SZ CSCFlags=0\0MaxUses=4294967295\0Path=C:\Test\0Permissions=0\0Remark=\0ShareName=Sp aces\0Type=0
私は2つの株式でそれをテストしています、「テスト」と
私はtest
共有を削除することができました「Spがエース」が、
"tokens=1"
は最初の単語だけをつかむので、私は
sp aces
共有を削除することができませんでした。これを調整して、単一の単語や空白のある単語でも機能するようにするにはどうすればよいですか?
1 'セットTEMP = %% S' - > '設定TEMP = %% S'または'設定 "TEMP = %% S" '。 2.システムで既に使用されているので、変数名 'temp'を使用しないでください。 – aschipfl
' tokens = 1'を 'tokens = *'(先頭の空白を削除)または 'delims ='何も削除しないでください)... – aschipfl
tokens = *を使用すると、名前だけでなく、2番目のテキストファイルから行全体が渡されます。そして、共有名の長さは任意です。したがって、私はそれに応じてトークンを設定することはできません。 – Conash