微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法将内容流式传输到文件

如何解决无法将内容流式传输到文件

我编写了执行以下操作的代码

  1. 检查YouTube单词是否在计算机的主机文件
  2. 如果没有,请在文件中插入YouTube一词
  3. 如果存在-从文件删除YouTube一词。并运行一个计时器来返回YouTube一词 完成每个步骤后-停止Chrome.exe任务 由于某些原因,它不起作用。
@echo off
setlocal EnableDelayedExpansion
(reg query "HKU\S-1-5-19" || (powershell start-process -FilePath '%0' -verb runas&exit /B)) >NUL 2>&1
:start
FIND /i "www.youtube.com" "%WINDIR%\System32\Drivers\Etc\Hosts" >nul 2>&1 
if errorlevel 1 (
    echo.
    echo 127.0.0.1 www.youtube.com >> %WINDIR%\System32\Drivers\Etc\Hosts
    Taskkill /F /IM chrome.exe
)  ELSE (
    set /p "OPEN_TIME=Enter time: "
    echo.
    echo # copyright (c) 1993-2009 Microsoft Corp.> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # This file contains the mappings of IP addresses to host names. Each>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # entry should be kept on an individual line. The IP address should>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # be placed in the first column followed by the corresponding host name.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # The IP address and the host name should be separated by at least one>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # space.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # Additionally,comments (such as these) may be inserted on individual>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # lines or following the machine name denoted by a '#' symbol.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # For example:>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #      102.54.94.97     rhino.acme.com          # source server>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #       38.25.63.10     x.acme.com              # x client host>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo: >> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # localhost name resolution is handled within DNS itself.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #  127.0.0.1       localhost>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #  ::1             localhost>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo 127.0.0.1 view-localhost # view localhost server>> %WINDIR%\System32\Drivers\Etc\Hosts
    Taskkill /F /IM chrome.exe
    timeout /T !OPEN_TIME!
    GOTO start
)

如果我删除整个ELSE命令并仅保留此代码,它将起作用:

@echo off
setlocal EnableDelayedExpansion
(reg query "HKU\S-1-5-19" || (powershell start-process -FilePath '%0' -verb runas&exit /B)) >NUL 2>&1
:start
FIND /i "www.youtube.com" "%WINDIR%\System32\Drivers\Etc\Hosts" >nul 2>&1 
if errorlevel 1 (
   echo.
   echo 127.0.0.1 www.youtube.com >> %WINDIR%\System32\Drivers\Etc\Hosts
   Taskkill /F /IM chrome.exe
)

有人知道为什么吗?

解决方法

使这些行可写的E-Z方法只是在IF的外部括号之外。

这很容易通过将IF的全部内部混入一个调用函数中来完成,这也使测试变得相当简单,并且代码可能更易于遵循。

我想指出的是,由于您要用自己的文件内容替换文件内容,因此您永远无法确保自己不会覆盖自己或其他程序添加的任何其他条目(例如,反恶意软件已知为放很多!)

您可以通过以下方式进行调整:写入主机的副本,其中包含所有您要删除的行(除了要删除的主机),并添加其他行,然后在此过程中移动它以替换普通主机文件。

不过,现在就让我们拿走您的代码并使它更易于处理。

此外,我想您想每30分钟循环一次,而不管是否找到该项目,不是吗?您似乎在说代码应始终循环。因此,我将其移动了。

请确保您正在通过命令行运行此表单以对其进行测试,而不是双击它。

此外,请确保命令提示符正在以管理员身份运行,因为如果没有,则可能无法对hosts文件进行更改。

@(setlocal EnableDelayedExpansion
  echo off
  (reg query "HKU\S-1-5-19" || (powershell start-process -FilePath '%0' -verb runas&exit /B)) >NUL 2>&1
  SET "Write-Hosts=CALL :Write_Hosts "
  SET "_HostsFilePath=%WINDIR%\System32\Drivers\Etc\Hosts"
)

CALL :Main

( ENDLOCAL
  Exit /b
)

:Main
  FIND /i "www.youtube.com" "%_HostsFilePath%" >nul 2>&1 
  if errorlevel 1 (
    CALL :Missing
  )  ELSE (
    CALL :Found
  )
  Taskkill /F /IM chrome.exe
  FOR /F "Tokens=2-3 delims=:." %%A IN ("%TIME%") DO (SET /A "Timer=(30-((1%%A-(2%%A-1%%A))%%30))*60 - (1%%B-(2%%B-1%%B))")
  Echo.Waiting %OPEN_TIME% Seconds before Running again.
  timeout /T %OPEN_TIME%
 GOTO :Main
GOTO :EOF

:Missing
  echo. Adding 127.0.0.1 www.youtube.com
  %Write-Hosts%127.0.0.1 www.youtube.com
GOTO :EOF

:Found
  REM set /p "OPEN_TIME=Enter time: "
  REM echo.
  echo. Resetting Hosts
  SET "Output=>"
  %Write-Hosts%# Copyright (c) 1993-2009 Microsoft Corp.
  %Write-Hosts%#
  %Write-Hosts%# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
  %Write-Hosts%#
  %Write-Hosts%# This file contains the mappings of IP addresses to host names. Each
  %Write-Hosts%# entry should be kept on an individual line. The IP address should
  %Write-Hosts%# be placed in the first column followed by the corresponding host name.
  %Write-Hosts%# The IP address and the host name should be separated by at least one
  %Write-Hosts%# space.
  %Write-Hosts%#
  %Write-Hosts%# Additionally,comments (such as these) may be inserted on individual
  %Write-Hosts%# lines or following the machine name denoted by a '#' symbol.
  %Write-Hosts%#
  %Write-Hosts%# For example:
  %Write-Hosts%#
  %Write-Hosts%#     102.54.94.97    rhino.acme.com        # source server
  %Write-Hosts%#      38.25.63.10    x.acme.com            # x client host
  %Write-Hosts%# localhost name resolution is handled within DNS itself.
  %Write-Hosts%#  127.0.0.1      localhost
  %Write-Hosts%#  ::1           localhost
  %Write-Hosts% 127.0.0.1 view-localhost # view localhost server
GOTO :EOF

:Write_Hosts
  ECHO.%*
  ECHO.%*%Output% "%_HostsFilePath%"
  SET "Output=>>"
GOTO :EOF
,

这是代码的固定版本: 请注意,我更改了Copyright (c^)comments (such as these^)

以外的其他内容
@echo off
setlocal EnableDelayedExpansion
(reg query "HKU\S-1-5-19" || (powershell start-process -FilePath '%0' -verb runas&exit /B)) >NUL 2>&1
:start
FIND /i "www.youtube.com" "%WINDIR%\System32\Drivers\Etc\Hosts" >nul 2>&1 
if errorlevel 1 (
    echo.
    echo 127.0.0.1 www.youtube.com >> %WINDIR%\System32\Drivers\Etc\Hosts
    Taskkill /F /IM chrome.exe
)  ELSE (
    set /p "OPEN_TIME=Enter time: "
    echo.
    echo # Copyright (c^) 1993-2009 Microsoft Corp.> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # This file contains the mappings of IP addresses to host names. Each>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # entry should be kept on an individual line. The IP address should>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # be placed in the first column followed by the corresponding host name.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # The IP address and the host name should be separated by at least one>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # space.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # Additionally,comments (such as these^) may be inserted on individual>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # lines or following the machine name denoted by a '#' symbol.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # For example:>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #      102.54.94.97     rhino.acme.com          # source server>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #       38.25.63.10     x.acme.com              # x client host>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo: >> %WINDIR%\System32\Drivers\Etc\Hosts
    echo # localhost name resolution is handled within DNS itself.>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #  127.0.0.1       localhost>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo #  ::1             localhost>> %WINDIR%\System32\Drivers\Etc\Hosts
    echo 127.0.0.1 view-localhost # view localhost server>> %WINDIR%\System32\Drivers\Etc\Hosts
    Taskkill /F /IM chrome.exe
    timeout /T !OPEN_TIME!
    GOTO start
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?