bat批处理start一个start.bat 如何不弹出新窗口或者弹出新窗口关闭旧窗口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat批处理start一个start.bat 如何不弹出新窗口或者弹出新窗口关闭旧窗口相关的知识,希望对你有一定的参考价值。

我是做一个tomcat重启的一个bat
@echo off
set CURRENT_DIR=%cd%
call "shutdown.bat"
ping 127.0.0.1 -n 10

start cmd /c "%CURRENT_DIR%\startup.bat"
exit

现在是start 一个新进程后弹出了一个新窗口。如何才能不弹出新窗口或者关闭旧窗口呢

参考技术A start /b cmd /c "%CURRENT_DIR%\startup.bat"
start 用 /b 选项,不弹出新窗体。
参考技术B 你把start 后面的cmd /c去掉。本回答被提问者采纳 参考技术C @echo off
call shutdown.ba
ping 127.0.0.1 -n 10call startup.bat"

一个简单的分布式爬虫

下载scrapy-redis:

https://github.com/rmax/scrapy-redis

下载zip文件之后解压

 

建立两个批处理文件,start.bat和clear.bat
start.bat的内容为redis-server redis.windows.conf
clear.bat的内容为redis-cli flushdb
双击start.bat启动

这样就说明下好了,运行正常。

 

我们需要构建一个分布式爬虫系统:由一个master爬虫和slave爬虫组成,master端部署了redis数据库,master端从本地获取redis中的url,slave端通过网络连接访问master端的redis数据库,从中获取url进行爬取,而redis数据库本身的调度功能保证了master爬虫和slave爬虫不会爬取到重复的url。

 

 

新建爬虫项目,打开cmd:

scrapy startproject scrapyRedis


将src中的scrapy_redis这个文件夹复制到刚才新建的爬虫项目中。

 

 

按照scrapy-redis git上的说明,创建爬虫时,在新建的爬虫文件中粘贴这段代码到文件中

 

继承了RedisSpider这个类之后,爬虫爬取的数据就会首先存入redis,接下来再从redis里面读取,就相当于是一个队列,不断地往redis里面写入url,然后从redis里面读取网址。就不再有start_urls了,取而代之的是redis_key,scrapy-redis将key从list中pop出来成为请求的url地址。

引用scrapy-redis之后,写分布式爬虫就和写普通的scrapy爬虫一样,具体代码如下:

#encoding:utf-8
from scrapy_redis.spiders import RedisSpider
class MySpider(RedisSpider):
    name = \'jobbole\'
    allowed_domains = ["blog.jobbole.com"]
    # 其实如果不设置以下语句,scrapy-redis也会默认生成一个redis-key“爬虫名+:start_urls”
    redis_key = "jobbole:start_urls"
   #slave端爬虫注释掉下面的内容
   start_urls = [\'http://blog.jobbole.com/all-posts/\']
# 收集伯乐在线所有404的url以及404页面数 handle_httpstatus_list = [404] def parse(self, response): """ 1. 获取文章列表页中的文章url并交给scrapy下载后并进行解析 2. 获取下一页的url并交给scrapy进行下载, 下载完成后交给parse """ # 解析列表页中的所有文章url并交给scrapy下载后并进行解析 if response.status == 404: self.fail_urls.append(response.url) self.crawler.stats.inc_value("failed_url") post_nodes = response.css("#archive .floated-thumb .post-thumb a") for post_node in post_nodes: image_url = post_node.css("img::attr(src)").extract_first("") post_url = post_node.css("::attr(href)").extract_first("") yield Request(url=parse.urljoin(response.url, post_url), meta={"front_image_url": image_url}, callback=self.parse_detail) # 提取下一页并交给scrapy进行下载 next_url = response.css(".next.page-numbers::attr(href)").extract_first("") if next_url: yield Request(url=parse.urljoin(response.url, post_url), callback=self.parse) def parse_detail(self, response): pass

 

在爬虫的settings.py中,我们需要部署一下,master爬虫和slave爬虫其他地方都差不多,唯独settings.py部署方式上有区别:

master爬虫部署,访问本地的redis数据库:

REDIS_URL = None
REDIS_HOST = \'localhost\'
REDIS_PORT = 6379

slave爬虫部署,需要访问master端的redis数据库:

REDIS_URL = \'redis://192.168.1.100:6379\'
REDIS_HOST = None
REDIS_PORT = None

新建一个方便pycharm运行的文件main.py

from scrapy import cmdline
cmdline.execute("scrapy crawl jobbole".split())

分别运行master,slave爬虫一个简单的分布式爬虫就做好了。

 

以上是关于bat批处理start一个start.bat 如何不弹出新窗口或者弹出新窗口关闭旧窗口的主要内容,如果未能解决你的问题,请参考以下文章

用bat批处理启动关闭控制台程序

用bat批处理启动关闭控制台程序

一个简单的分布式爬虫

powershell 远程执行bat脚本,去启动一个应用,如何让应用一直运行,powershell能正常退出?

cmd 运行完成后自动关闭

Tomcat无法正常启动start.bat 一闪而过只显示USING 故障排除