2016-07-06 61 views
1

我想根據時間從我的電腦中阻止社交媒體。 下午9點後阻止並在上午11點後解鎖(如家長控制) 我嘗試了以下但未通過。如何從窗口中阻止社交媒體

創建一個block.bat文件

@echo off 
(Get-Content C:\Windows\System32\drivers\etc\hosts) | ForEach-Object { $_ -replace "#127.0.0.1 facebook.com", "127.0.0.1 facebook.com" } | Set-Content C:\Windows\System32\drivers\etc\hosts 

創建一個Unblock.bat文件

@echo off 
(Get-Content C:\Windows\System32\drivers\etc\hosts) | ForEach-Object { $_ -replace "127.0.0.1 facebook.com", "#127.0.0.1 facebook.com" } | Set-Content C:\Windows\System32\drivers\etc\hosts 

,並添加這2個bat文件到任務計劃程序。 Block將在上午11點運行,並在晚上9點解鎖。

我從PowerShell中收到此錯誤:

Set-Content : The input object cannot be bound because it did not contain the 
information required to bind all mandatory parameters: Path 
At line:1 char:140 
+ ... e "#127.0.0.1 facebook.com", "127.0.0.1 facebook.com" } | Set-Content 
+                ~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (# Copyright (c)...Microsoft Corp.:String) [Set-Content], ParameterBindingException 
    + FullyQualifiedErrorId : InputObjectMissingMandatory,Microsoft.PowerShell.Commands.SetContentCommand

並手動運行該批處理文件不執行任何操作。

+0

嗨,什麼不起作用?蝙蝠文件?計劃的任務?請編輯您的問題以包含此內容。 – sodawillow

+0

請詳細描述一下這意味着你失敗的原因 –

+0

在powershell工程文件'(Get-Content test.txt)中運行一個測試腳本。 ForEach-Object {$ _ -replace「from」,「to」} | Set-Content test.txt'這段代碼完美地工作。但是當我更改路徑並從蝙蝠運行它不工作。 – Nithee

回答

1

給該代碼拍:

@Echo off 
cls & color 0A & echo. 
Mode con cols=55 lines=5 
Set Copyright=Hackoo 2016 
Title Block-UnBlock Facebook by %Copyright% 
::::::::::::::::::::::::::::::::::::::::: 
:: Automatically check & get admin rights 
::::::::::::::::::::::::::::::::::::::::: 
CLS 
Echo. 
Echo. 
ECHO   ************************************** 
ECHO     Running Admin shell 
ECHO   ************************************** 
::pause 
:checkPrivileges 
NET FILE 1>NUL 2>NUL 
if '%errorlevel%' == '0' (goto gotPrivileges) else (goto getPrivileges) 

:getPrivileges 
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges) 
Echo. 
ECHO. 
ECHO   ************************************** 
ECHO   Invoking UAC for Privilege Escalation 
ECHO   ************************************** 

setlocal DisableDelayedExpansion 
set "batchPath=%~0" 
setlocal EnableDelayedExpansion 
(
ECHO Set UAC = CreateObject^("Shell.Application"^) 
ECHO args = "ELEV " 
ECHO For Each strArg in WScript.Arguments 
ECHO args = args ^& strArg ^& " " 
ECHO Next 
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 
)> "%temp%\OEgetPrivileges.vbs" 
"%SystemRoot%\System32\WScript.exe" "%temp%\OEgetPrivileges.vbs" %* 
exit /B 

:gotPrivileges 
if '%1'=='ELEV' shift /1 
setlocal & pushd . 
cd /d "%~dp0" 
:::::::::::::::::::::::::::: 
::START 
:::::::::::::::::::::::::::: 
setlocal enabledelayedexpansion 
Set Copyright=Hackoo 2016 
Title Block-UnBlock Facebook by %Copyright% 
Rem If you didn't want to create a shortcut and see the intro on your desktop just comment this line below 
If Not Exist %USERPROFILE%\Desktop\Block-UnBlock_Facebook.lnk Goto:Intro 
::*********************************************************************************************** 
:CheckPassword 
Mode con cols=55 lines=3 
cls & color 0A & echo. 
set MyPassword=Hackoo 
set "psCommand=powershell -Command "$pword = read-host 'Enter your password' -AsSecureString ;^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword);^
     [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)"" 
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p 
if %MyPassword%==%password% (Goto:Good) else (Goto:Bad) 
exit/b 
::*********************************************************************************************** 
:Good 
Cls & Color 0A 
echo(
echo      Good Password 
TimeOut /T 1 /NoBreak>nul 
Goto:menuLOOP 
::*********************************************************************************************** 
:Bad 
Cls & Color 0C 
echo(
echo      Bad password 
TimeOut /T 1 /NoBreak>nul 
Goto:CheckPassword 
::*********************************************************************************************** 
:menuLOOP 
Mode con cols=85 lines=8 
Cls & color 0B 
Title Block and UnBlock Facebook by %Copyright% 
echo(
echo(  ================================Menu================================ 
echo(
for /f "tokens=2* delims=_ " %%A in ('"findstr /b /c:":menu_" "%~f0""') do echo        %%A %%B 
echo(
echo(  ==================================================================== 
set choice= 
echo(& set /p choice=Make a choice or hit ENTER to quit: || GOTO :EOF 
echo(& call :menu_[%choice%] 
GOTO:menuLOOP 
::******************************************************************************************** 
:menu_[1] Blocking Facebook 
Mode con cols=85 lines=8 
cls & color 0C 
Call:SkipLine 3 
Call:Tab 6 
echo %x% "Deactivate write protection" ... 
TimeOut /T 2 /NoBreak>nul 
set hostspath=%windir%\System32\drivers\etc\hosts 
Set BackupHosts=%AppData%\hosts.hackoo 
If Not Exist %BackupHosts% Attrib -R %hostspath% && Type %hostspath% > %BackupHosts% 
cls 
Attrib -R %hostspath% 
(
echo ########################### 
echo # Block Facebook %Copyright%# 
echo ########################### 
echo 127.0.0.1 www.facebook.com 
echo 127.0.0.1 facebook.com 
echo 127.0.0.1 ok.facebook.com 
echo 127.0.0.1 www.ok.facebook.com 
echo 127.0.0.1 a.ok.facebook.com 
echo 127.0.0.1 www.a.ok.facebook.com 
echo 127.0.0.1 facebook.com.au 
echo 127.0.0.1 www.facebook.com.au 
echo 127.0.0.1 nl-nl.facebook.com 
echo 127.0.0.1 www.nl-nl.facebook.com 
echo 127.0.0.1 facebook.nl 
echo 127.0.0.1 www.facebook.nl 
echo 127.0.0.1 login.facebook.com.au 
echo 127.0.0.1 www.login.facebook.com.au 
echo 127.0.0.1 www-10-01-snc2.facebook.com 
echo 127.0.0.1 www-11-01-snc2.facebook.com 
echo 127.0.0.1 www-10-03-ash1.facebook.com 
echo 127.0.0.1 www-12-08-ash1.facebook.com 
echo 127.0.0.1 www-13-08-ash1.facebook.com 
echo 127.0.0.1 static.ak.fbcdn.net 
echo 127.0.0.1 www.static.ak.fbcdn.net 
echo 127.0.0.1 login.facebook.com 
echo 127.0.0.1 www.login.facebook.com 
echo 127.0.0.1 login.facebook.com.nl 
echo 127.0.0.1 www.login.facebook.com.nl 
echo 127.0.0.1 fbcdn.net 
echo 127.0.0.1 www.fbcdn.net 
echo 127.0.0.1 fbcdn.com 
echo 127.0.0.1 www.fbcdn.com 
echo 127.0.0.1 ads.ak.facebook.com 
echo 127.0.0.1 www.ads.ak.facebook.com 
echo 127.0.0.1 static.ak.connect.facebook.com 
echo 127.0.0.1 www.static.ak.connect.facebook.com 
echo 127.0.0.1 login.facebook.com 
echo 127.0.0.1 www.login.facebook.com 
) > %hostspath% 
cls 
Call:SkipLine 3 
Call:Tab 5 
echo %x% "Facebook is Blocked by %Copyright%" 
ATTRIB +R %hostspath% 
TimeOut /T 2 /NoBreak>nul 
Start www.facebook.com 
::GOTO :menuLOOP 
Exit 
::******************************************************************************************** 
:menu_[2] UnBlocking Facebook 
cls & color 0A 
Title UnBlocking Facebook .... 
Call:SkipLine 3 
Call:Tab 5 
set hostspath=%windir%\System32\drivers\etc\hosts 
Set BackupHosts=%AppData%\hosts.hackoo 
If Exist %BackupHosts% Attrib -R %hostspath% && Type %BackupHosts% > %hostspath% 
ATTRIB +R %hostspath% 
echo %x% "Facebook is UnBlocked by %Copyright%" 
TimeOut /T 2 /NoBreak>nul 
Start www.facebook.com 
Exit 
::GOTO :menuLOOP 
::****************************************************************************************** 
:Play 
(
echo Play "%~1" 
echo Sub Play(URL^) 
echo Dim Sound 
echo Set Sound = CreateObject("WMPlayer.OCX"^) 
echo Sound.URL = URL 
echo Sound.settings.volume = 100 
echo Sound.Controls.play 
echo do while Sound.currentmedia.duration = 0 
echo  wscript.sleep 100 
echo loop 
echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000 
echo End Sub 
)>%~2 
::******************************************************************************************** 
:SkipLine 
    For /L %%I In (1,1,%1) Do Echo(
    Goto:Eof 
::******************************************************************************************** 
:Tab 
set "x=" 
For /L %%I In (1,1,%1) Do Set "x=!x! " 
REM         ^-- this is a TAB 
goto :eof 
::******************************************************************************************** 
:Intro 
Color 0A & Mode con cols=101 lines=57 
echo(
echo          ` `` ` ` ` `` ``          
echo         ``` ` `````````  ` `         
echo         ` .-/+osyhhhhhhhhhhhhyyso+:-` ` `        
echo        ````/hddddddddddddddddddddddddddhy- `` `        
echo        `` :mdmdmdmmddddddddddddddddddddddy`         
echo         ` oNmmmmddddddddddddddddddddddmmmd. `        
echo         ` yNmNNNmmmmmmmmmmmmmmmmmmmmmmmmmm:         
echo        ` .dNmNmNNmmNmmmmmmmmmmmmmmmmmmmmmN+ ``        
echo        ` :NmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNy ` ``       
echo        ` oNmmmmNmmmmmmmmmmmmmmmmmmmmmmmmmmm. `       
echo        ` hNmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmN: `  `      
echo     ``   ` .mNmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmN+ `` `` `      
echo    ` ` `..-/++osyNmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNmNy``` ``      
echo    ` ` `.:+syhddddddmmmNmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNmyoo/:-.``      
echo   ` ``-/shhddddddddddddmNNmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNmdddddddhyo+:-``` ```   
echo   ` `.+ydddddddddddddddddNNNNmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmdddmddddmmddhyo:.``   
echo   ``+dddddddddddddddddmmmNNNNmmmmmmmmdddddmddddddddmmdmmmmmmNmdmdddddddddddddddy/`   
echo  ` `ydddddddddddddddddddmNNNNNmmmmmdddddddddddddddddddddmmmNNNmdddddddddddddddddddd/``  
echo   omdmdddddddddddddddddmNNNmmmmmmmmddddddddddddddddddddmmNNNmmdmddddddddddddddddddd. `  
echo  ` omddddddddddddmddddmmdmmmmmmNmmmmmddddddddddddddddmmmmmNmmmdddddddddddddddddddddy` ` `  
echo   `ymdddddddddddddddddmddddmmmmmmmmmdddddddddddddddddmmmdmddddddddddddddddddddddds. ``  
echo  ` `+dmdddddmmdmmmmddmmmdddddmmmddddddddddddddddddddddddddddddddddmmddmddddddmh+.` ` `  
echo   `` ``/shmdmddmmmmmmmddddmmmmmmmmmmdddddddddddddddddddddddddddddmmddmdddddhy+-` ` ` `  
echo  ` ` ```-/oyhdddmmmmmmmmmmmmmmmmmmdddddddddddddmddddmmmdmmddddddddddhyo/-` ` ` ` `  
echo   ` ` ` ` ` ``-/+sydddddddddmddmmdmdddmdddddmmmdmmmdddddddhhhhhho/-.` `     
echo      ``` ` :mNMNNNNNmdhhhhhhhddddddddhdhhhhhhhyyhmmNNNmmd. `       
echo      ` :mNNNNNMNNNhsooo+++++oyyo+oo++/://++++sNNNNNNmh/ ``      
echo      ``` :dNNNNNNMNNNdyssoo++/+oyy++o++////+oooohNNNNNNmd/ ` ` `      
echo      `:dNNNNNNMNNNNmyyssooo+osyy++ooo++++oosssdNNNNNNmdo ` `      
echo     ``./hNNNNNNNNNNNmNdsyhhoooyoys+/+o+++++yhssymNNNNNNmdy.       
echo    ` `` .oymNNNNmNNNMNNNNMhosdmdysohho+hs+++sddossmNNNNNNNmdmo````      
echo     ` ` -/smNNNNNNNNNNNNNMNdosyydmmmdoodNmmddssosmMNmNNNNNmmdds:.`      
echo `    ` ` .+dmNNNmNNNNNNNNNNMNdosyssssoo+osoooososmMMNmNNNNmNmmddds:.``     
echo ` ``` `` ` ``.-/odNNNNNNmNMNNNNNNMMMMMmssyooooyys++++oohNMMMNmNNNNmNmmmmNNNmdho-` `   
echo ` `` `.-/+syhdmNNNNMMNNNNNNNNNNNNmNMNNMNNhso++smms//+oodNNMMNmNmmNNmNNmNmNNNNNNNmhs/.` ` `  
echo ` ` .+ydmNNNNNNNNNMNMMNNNNNNNNNNNNNNMMMNMMNmy+/hmdh:++yNNNMMMNNNmmmmmNNmNNNNNNNNNNNNmmhs:.` `  
echo ```/dmNNNNNNNMNNNMMMMMMNMNNNNNNNNmNNMMMMMNMNNh+omNo/sdMNMNNMMNNNmmmmmmNNNNNNNNNNNNNNNNmNmds:`` ` 
echo ``.smmmNNNNNNNNNNNNNNNNMNMNNNMNNmNmNNMNMMMNNNNNNdNmdmNNNNNNMMNNNNNNmmmmNNNNNNNNNNNNNNNNNNNmmmh/` ` 
echo ``/dmmNmNNNNNNNNNNNNNNNNNNMMNNNNmmNNNMMMMMMMMMMMNMNNMNMNNNNNNNNNNNNNmmmmNNNNNNNNNNNNNNNNNmmNmmmms. ` 
echo NmmmmNNNmmmmNNNNNNNNNNNMMMNNNNNmNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNmmmmNNNNNNNNNNNNNNNmmmmNmmmmmh-` 
echo mmmmNmNmmmmmmmNNNNNNNNMMMMMMMMNNNmNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNMNNNmmmNNNNNNNNNNNNNNNNNmmmmmmmmmmd: 
echo mNNmmmmmmmmmmNNNNNMMMMMMNMNMMMMNNmNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmmmmmmmmmmmmmmm 
echo NmmmmmmmmmmmNNNNNNNNMMNNNMNNNMMNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmmmmmmmmmmmmm 
echo(
echo     "/ |/|     /|       "; 
echo     "$$ | $$ | ______ _______ $$ | __ ______ ______ "; 
echo     "$$ |__$$ |/ \/  |$$ |/|/ \/ \ "; 
echo     "$$ $$ | $$$$$$ |/$$$$$$$/ $$ |_/$$/ /$$$$$$ |/$$$$$$ |"; 
echo     "$$$$$$$$ |/ $$ |$$ |  $$ $$< $$ | $$ |$$ | $$ |"; 
echo     "$$ | $$ |/$$$$$$$ |$$ \_____ $$$$$$ \ $$ \__$$ |$$ \__$$ |"; 
echo     "$$ | $$ |$$ $$ |$$  |$$ | $$ |$$ $$/ $$ $$/ "; 
echo     "$$/ $$/ $$$$$$$/ $$$$$$$/ $$/ $$/ $$$$$$/ $$$$$$/ "; 
echo     "               "; 
echo     "               "; 

Set vbsfile=%temp%\Intro.vbs 
Set URL=http://hackoo.alwaysdata.net/Intro.mp3 
Call:Play %URL% %vbsfile% 
Start %vbsfile% 
Timeout /T 18 /Nobreak>nul 
::******************************************************************** 
Set MyFile=%~f0 
Set ShorcutName=Block-UnBlock_Facebook 
(
echo Call Shortcut("%MyFile%","%ShorcutName%"^) 
echo ^'**********************************************************************************************^) 
echo Sub Shortcut(CheminApplication,Nom^) 
echo Dim objShell,DesktopPath,objShortCut,MyTab 
echo Set objShell = CreateObject("WScript.Shell"^) 
echo MyTab = Split(CheminApplication,"\"^) 
echo If Nom = "" Then 
echo Nom = MyTab(UBound(MyTab^)^) 
echo End if 
echo DesktopPath = objShell.SpecialFolders("Desktop"^) 
echo Set objShortCut = objShell.CreateShortcut(DesktopPath ^& "\" ^& Nom ^& ".lnk"^) 
echo objShortCut.TargetPath = Dblquote(CheminApplication^) 
echo ObjShortCut.IconLocation = "Winver.exe,0" 
echo objShortCut.Save 
echo End Sub 
echo ^'********************************************************************************************** 
echo ^'Fonction pour ajouter les doubles quotes dans une variable 
echo Function DblQuote(Str^) 
echo DblQuote = Chr(34^) ^& Str ^& Chr(34^) 
echo End Function 
echo ^'********************************************************************************************** 
) > %temp%\Shortcutme.vbs 
Start /Wait %temp%\Shortcutme.vbs 
Del %temp%\Shortcutme.vbs 
Goto:CheckPassword 
::**************************************************************************************************** 
:EOF 
EXIT 
+0

太棒了:-O,我還有一個問題,而已經在主機文件中的數據已被覆蓋,我一直需要它, 感謝@Hackoo這個真棒代碼。 – Nithee

0

你不能通過主機將Facebook轉發給本地主機。

在您的路由器或防火牆上執行此操作。

但如果適合你使用批處理文件。 座

最好使用這種VBS

https://www.experts-exchange.com/questions/26971010/VBScript-Hosts-File-add-remove-multiple-entries.html

+0

你絕對可以,應該是另一個問題......此外,專家交流是一個可怕的地方鏈接到(paywall !!!) –

+0

BDW的vbs腳本效果很好,你可以在你的電腦上測試。 – DisplayName

0

這裏是我們的解決方案即可。

阻止

$HostFile = "$($env:windir)\system32\Drivers\etc\hosts" 

$Hosts = Get-Content -Path $HostFile 
(Get-Content $HostFile) -replace '127.0.0.1 Facebook.com', '#127.0.0.1 Facebook.com' | Set-Content $HostFile 

$HostFile = "$($env:windir)\system32\Drivers\etc\hosts" 
$Hosts = Get-Content -Path $HostFile 
(Get-Content $HostFile) -replace '#127.0.0.1 Facebook.com', '127.0.0.1 Facebook.com' | Set-Content $HostFile