【问题标题】:Batch Program Problem批处理程序问题
【发布时间】: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


    【解决方案1】:

    用插入符号 (^) 转义大于和小于

    【讨论】:

    • 哇,天才。非常感谢!花几个小时试图弄清楚:/
    • @Josh 如果 Arun 的回答解决了你的问题,你应该接受他的回答。
    • @aphoria 很抱歉,现在接受了 :) 我有一个新问题,也许你们中的一个可以回答? stackoverflow.com/questions/7245932/batch-command-conflict
    • @Josh:谢谢。在你的另一篇文章中,我回复了一个建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多