【发布时间】:2011-08-30 04:23:07
【问题描述】:
我目前正在尝试编写一个允许用户输入网站名称的批处理脚本,然后在用户的主机文件底部写入“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
此行是代码的一部分,如果用户愿意,它将能够从主机文件中删除网站。 问题似乎是“”符号。该程序不允许我将这些写入新的批处理文件。我试图将它们保存为变量,并意识到我能做到的唯一方法就是用这样的引号声明它们:
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
【问题讨论】:
标签: batch-file special-characters