2011-08-29 149 views
0

我目前正在嘗試編寫批處理腳本,它允許用戶輸入網站的名稱,然後在用戶主機文件的底部寫入「127.0.0.1 www.website.com」(本質上阻止該網站)批處理程序問題

一切工作除了一行。我需要編寫以下行將由我的程序來創建另一個批處理文件:

echo find /v "%url%" <C:\WINDOWS\System32\drivers\etc\hosts> C:\Users\%username%\desktop\temp.txt >> unblock.bat 

此行是代碼,就可以刪除該網站從hosts文件,如果用戶希望的一部分。 問題似乎是「<」和「>」標誌。該程序不會允許我將這些寫入新的批處理文件。我試圖把它們保存爲變量,並意識到我能做的唯一的辦法是用引號這樣的聲明它們:

set char1="<" 
set char2=">" 

,然後我的命令如下:

echo find /v "%url%" %char1% C:\WINDOWS\System32\drivers\etc\hosts %char2% C:\Users\%username%\desktop\temp.txt >> unblock.bat 

這樣做的問題是,當寫入新的批處理文件時,它們仍然在它們周圍,導致新的批處理文件無用,因爲命令無法正確執行。

有關如何解決此問題的任何想法?

這裏的批處理文件(不完全)全碼:

@echo off 
TITLE Site Blocker 
SET /P url=Enter website (e.g. www.facebook.com)- 
echo. >> C:\WINDOWS\System32\drivers\etc\hosts 
echo 127.0.0.1 %url% >> C:\WINDOWS\System32\drivers\etc\hosts 
echo find /v "%url%" <C:\WINDOWS\System32\drivers\etc\hosts> C:\Users\%username%\desktop\temp.txt >> unblock.bat 
echo del C:\WINDOWS\System32\drivers\etc\hosts /Q >> unblock.bat 
echo ren C:\Users\%username%\desktop\temp.txt hosts >> unblock.bat 
echo copy C:\Users\%username%\desktop\hosts C:\WINDOWS\System32\drivers\etc\ >> unblock.bat 
echo del C:\Users\%username%\desktop\hosts /Q >> unblock.bat 
echo msg * %url% unblocked >> unblock.bat 
echo del unblock.bat >> unblock.bat 
echo exit >> unblock.bat 
exit 

回答

3

逃生比且小於用符號(^)

+0

哇,天才。非常感謝!花幾個小時試圖弄明白:/ – Josh

+0

@Josh如果阿倫的答案解決了你的問題,你應該接受他的答案。 – aphoria

+0

@aphoria:謝謝:-) – Arun