2011-08-29 139 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