[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 如何将多个批处理的代码合并到一起

本帖最后由 maluwang 于 2016-12-12 20:37 编辑

工作中 每天都要使用的批处理如下

批处理1
  1. tcprelay.py -t 8000:8001 -u 32145512fdee4bfdsfsdfsdsdas9c46c579cbd7
复制代码
批处理2
  1. tcprelay.py -t 8000:8002 -u 32145512fdee4bd66dasdas9c46c579cbd7
复制代码
批处理3
  1. tcprelay.py -t 8000:8003 -u asddasfg10eb755bd5c8025bd6596f89eb91df6b5
复制代码
批处理4
  1. tcprelay.py -t 8000:8004 -u asddasfg10efdsfsdghhh5bd6596f89eb91df6b5
复制代码
批处理5
  1. tcprelay.py -t 8000:8005 -u a233456g10eb755bd5c8025bd6596f89eb91df6b5
复制代码
......


以上是5个独立的批处理.bat文件。工作中,每天需要点开这5个批处理,并且让他保留窗口不关闭。
有没有方法把这5个批处理集中在一个批处理。
也就是只开一个批处理而不用再开5个批处理呢?


看看老司机的方法,谢谢
1

评分人数

回复 27# codegay


这个批处理可以重复运行,每重复运行一次,就多出对应的N条进程。有没有办法开启过的不能再开启或者合并到一起用一个进程呢?

TOP

回复 27# codegay


    非常感谢耐心解答。确实好使。


   请问运行后有N多个 pythonw.exe 进程 这个进程可以变为1个吗?共用一个?

TOP

回复 26# maluwang


    文件名改为pyw
start xxx.pyw

或者start pythonw xx.py

然后看进程中是驻留有5个pythonw.exe进程。

如果不行,搜索本站 隐藏窗口。

另一个可行的方式是改python 代码变成多进程的方式执行。但是我这里没苹果设备,没有办法测试。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 24# codegay


你说的很对,之前看到没有设备号 就以为还和之前一样不行。
仔细测试后发现完全和你说的一样,非常感谢。
  1. start cmd.exe /k tcprelay.py -t 8000:8001 -u 123451cdd9f2aced282a8e43ba2c3310df76342e
  2. start cmd.exe /k tcprelay.py -t 8000:8002 -u 123451cdd9f2aced282a8e43ba2c3310df123457
  3. start cmd.exe /k tcprelay.py -t 8000:8003 -u 543211cdd9f2aced282a8e43ba2c3310df123341
  4. start cmd.exe /k tcprelay.py -t 8000:8004 -u 654321cdd9f2aced282a8e43ba2c3310df122134
  5. start cmd.exe /k tcprelay.py -t 8000:8005 -u 457321cdd9f2aced282a8e43ba2c3310df12fdsf
复制代码
是用这段代码就可以了。



这个运行后,会运行5个独立CMD窗口
如何让只在一个CMD窗口显示呢?或者干脆不让显示,太多窗口好烦。。

TOP

回复 22# /zhqsystem/zhq


  测试了,运行就闪退了,没有驻留CMD窗口

TOP

本帖最后由 codegay 于 2016-12-13 05:26 编辑

我验证了一下,不管加不加start 程序代码中已经得到了UUID。
也就是说不管是参数的传递还是参数处理上都没有问题,只是表面上显示不一样而已。你们不要纠结了。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

搜索了一下,tcprelay.py 的项目在这里 https://github.com/nabla-c0d3/multcprelay
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 19# maluwang
  1. set "devicecode=32145512fdee4bfdsfsdfsdsdas9c46c579cbd7;32145512fdee4bd66dasdas9c46c579cbd7;asddasfg10eb755bd5c8025bd6596f89eb91df6b5;asddasfg10efdsfsdghhh5bd6596f89eb91df6b5;a233456g10eb755bd5c8025bd6596f89eb91df6b5"
  2. set "devicecode_n="&&for %%n in (!devicecode!)do set/a "devicecode_n+=1"&&set "devicecode_n_!devicecode_n!=%%~n"
  3. set "n="&&for /l %%n in (8001,1,8005)do (set/a "n+=1"
  4. for /f "delims=" %%z in ("!n!")do (
  5.   set "_new=start^/i ^"%%~n^" ^"%~dp0tcprelay.py^" -t 8000:%%~n !devicecode_n_%%~z!^^^&^^^&^pause"
  6.   start "%%~n" "%systemroot%\system32\cmd.exe" /c !_new!
  7. )
  8. )
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 20# czjt1234

运行了这段代码闪退。

我把PY文件通过QQ发你了。帮我看看,谢谢!

TOP

弄个vbs试试呢
  1. Set oWshShell = CreateObject("WScript.Shell")
  2. oWshShell.Run "tcprelay.py -t 8000:8001 -u 123451cdd9f2aced282a8e43ba2c3310df76342e"
  3. oWshShell.Run "tcprelay.py -t 8000:8002 -u 123451cdd9f2aced282a8e43ba2c3310df123457"
  4. oWshShell.Run "tcprelay.py -t 8000:8003 -u 543211cdd9f2aced282a8e43ba2c3310df123341"
  5. oWshShell.Run "tcprelay.py -t 8000:8004 -u 654321cdd9f2aced282a8e43ba2c3310df122134"
  6. oWshShell.Run "tcprelay.py -t 8000:8005 -u 457321cdd9f2aced282a8e43ba2c3310df12fdsf"
复制代码
再不行就只有改py文件了

QQ 20147578

TOP

回复 9# /zhqsystem/zhq


    批处理1
tcprelay.py -t 8000:8001 -u 32145512fdee4bfdsfsdfsdsdas9c46c579cbd7
复制代码
批处理2
tcprelay.py -t 8000:8002 -u 32145512fdee4bd66dasdas9c46c579cbd7
复制代码
批处理3
tcprelay.py -t 8000:8003 -u asddasfg10eb755bd5c8025bd6596f89eb91df6b5
复制代码
批处理4
tcprelay.py -t 8000:8004 -u asddasfg10efdsfsdghhh5bd6596f89eb91df6b5
复制代码
批处理5
tcprelay.py -t 8000:8005 -u a233456g10eb755bd5c8025bd6596f89eb91df6b5
复制代码
......



请问这个怎么合并到一个批处理里?谢谢

TOP

回复 16# czjt1234

现在每个批处理的代码如下
  1. tcprelay.py -t 8000:8001 -u 32145512fdee4bfdsfsdfsdsdas9c46c579cbd7
复制代码
依次打开每个批处理显示如下

根据你提供的代码合并到一个批处理代码如下
  1. @echo off
  2. start cmd.exe /k tcprelay.py -t 8000:8001 -u 123451cdd9f2aced282a8e43ba2c3310df76342e
  3. start cmd.exe /k tcprelay.py -t 8000:8002 -u 123451cdd9f2aced282a8e43ba2c3310df123457
  4. start cmd.exe /k tcprelay.py -t 8000:8003 -u 543211cdd9f2aced282a8e43ba2c3310df123341
  5. start cmd.exe /k tcprelay.py -t 8000:8004 -u 654321cdd9f2aced282a8e43ba2c3310df122134
  6. start cmd.exe /k tcprelay.py -t 8000:8005 -u 457321cdd9f2aced282a8e43ba2c3310df12fdsf
复制代码
打开后显示如下
1

评分人数

TOP

回复 15# codegay


Python 2.6.4



#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# tcprelay.py - TCP connection relay for usbmuxd
#
# Copyright (C) 2009        Hector Martin "marcan" <hector@marcansoft.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 or version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

import usbmux
import SocketServer
import select
from optparse import OptionParser
import sys
import traceback

class SocketRelay(object):
    def __init__(self, a, b, maxBuffer = 65535):
        self.a = a
        self.b = b
        self.atob = ""
        self.btoa = ""
        self.maxBuffer = maxBuffer

    def handle(self):
        while True:
            rlist = []
            wlist = []
            xlist = [self.a, self.b]
            if self.atob:
                wlist.append(self.b)
            if self.btoa:
                wlist.append(self.a)
            if len(self.atob) < self.maxBuffer:
                rlist.append(self.a)
            if len(self.btoa) < self.maxBuffer:
                rlist.append(self.b)
            rlo, wlo, xlo = select.select(rlist, wlist, xlist)
            if xlo:
                return
            if self.a in wlo:
                n = self.a.send(self.btoa)
                self.btoa = self.btoa[n:]
            if self.b in wlo:
                n = self.b.send(self.atob)
                self.atob = self.atob[n:]
            if self.a in rlo:
                s = self.a.recv(self.maxBuffer - len(self.atob))
                if not s:
                    return
                self.atob += s
            if self.b in rlo:
                s = self.b.recv(self.maxBuffer - len(self.btoa))
                if not s:
                    return
                self.btoa += s
            #print "Relay iter: %8d atob, %8d btoa, lists: %r %r %r"%(len(self.atob), len(self.btoa), rlo, wlo, xlo)


class TCPRelay(SocketServer.BaseRequestHandler):
    def handle(self):
        print "Incoming connection to {0}".format(self.server.server_address[1])

        print "Waiting for devices..."
        if len(self.server.devices) == 0:
            print "No device found"
            self.request.close()
            return

        dev = None
        if options.udid is None:
            # Default to the first available device if no udid was specified
            dev = self.server.devices[0]
        else:
            for device in self.server.devices:
                # Look for the specified device UDID
                if device.serial == options.udid:
                    dev = device
                    break

        if not dev:
            raise Exception("Could not detect specified device UDID: {0}".format(repr(options.udid)))

        print "Connecting to device {0}".format(dev)
        dsock = mux.connect(dev, self.server.remotePort)
        lsock = self.request
        print "Connection established, relaying data"
        try:
            fwd = SocketRelay(dsock, lsock, self.server.bufferSize * 1024)
            fwd.handle()
        finally:
            dsock.close()
            lsock.close()
        print "Connection closed"


class TCPServer(SocketServer.TCPServer):
    allow_reuse_address = True


class ThreadedTCPServer(SocketServer.ThreadingMixIn, TCPServer):
    pass


parser = OptionParser(usage="usage: %prog [OPTIONS] [Host:]RemotePort[ocalPort] [[Host:]RemotePort[:LocalPort]]...")
parser.add_option("-t", "--threaded", dest='threaded', action='store_true', default=False,
                  help="use threading to handle multiple connections at once")
parser.add_option("-b", "--bufsize", dest='bufsize', action='store', metavar='KILOBYTES', type='int', default=128,
                  help="specify buffer size for socket forwarding")
parser.add_option("-s", "--socket", dest='sockpath', action='store', metavar='PATH', type='str', default=None,
                  help="specify the path of the usbmuxd socket")
parser.add_option("-u", "--udid", dest='udid', action='store', metavar='UDID', type='str', default=None,
                  help="specify the device's udid if multiple devices are connected")

options, args = parser.parse_args()

serverClass = ThreadedTCPServer if options.threaded else TCPServer

if len(args) == 0:
    parser.print_help()
    sys.exit(1)

ports = []


mux = usbmux.USBMux(options.sockpath)
print "Waiting for devices..."
mux.process(0.1)
lastLength = len(mux.devices)

while True:
    mux.process(0.1)
    if len(mux.devices) == lastLength: break
    lastLength = len(mux.devices)

devices = mux.devices
print "Devices:\n{0}".format("\n".join([str(d) for d in devices]))

for arg in args:
    try:
        if ':' in arg:
            remotePort, localPort = arg.rsplit(":", 1)
            host, remotePort = remotePort.split(":") if len(remotePort.split(":")) > 1 else ("localhost", remotePort)
            remotePort = int(remotePort)
            localPort = int(localPort)
            ports.append((host, remotePort, localPort))
        else:
            ports.append(("localhost", int(arg), int(arg)))
    except:
        parser.print_help()
        sys.exit(1)

servers = []

for host, remotePort, localPort in ports:
    print "Forwarding local port {0}:{1} to remote port {2}".format(host, localPort, remotePort)
    server = serverClass((host, localPort), TCPRelay)
    server.remotePort = remotePort
    server.bufferSize = options.bufsize
    server.devices = devices
    servers.append(server)

alive = True

while alive:
    try:
        rl, wl, xl = select.select(servers, [], [])
        for server in rl:
            server.handle_request()
    except:
        traceback.print_exc()
        alive = False

TOP

  1. start cmd.exe /k echo -t 22:23 -u 6edcd1cdd9f2aced282a8e4cvbnc3310df76342e>c:\1.txt
  2. start notepad.exe c:\1.txt
复制代码
start 传递参数是没问题的

估计是这个tcprelay.py处理参数时比较死板

那你这样试试呢
  1. @echo off
  2. start cmd.exe /k tcprelay.py -t 8000:8001
  3. start cmd.exe /k tcprelay.py -t 8000:8002
  4. start cmd.exe /k tcprelay.py -t 8000:8003
  5. start cmd.exe /k tcprelay.py -t 8000:8004
  6. start cmd.exe /k tcprelay.py -t 8000:8005
复制代码

QQ 20147578

TOP

返回列表