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
哇,天才。非常感谢!花几个小时试图弄明白:/ – Josh
@Josh如果阿伦的答案解决了你的问题,你应该接受他的答案。 – aphoria
@aphoria:谢谢:-) – Arun