一、背景介绍
本人有两个微信,而且两个微信都是有在频繁的使用。所以为了使用方便,希望能在电脑上打开微信的时候,也是能打开两个微信。
但是众所周知,电脑版微信在打开一个微信之后,再去点击微信图标,是只会弹出已经打开的登录界面的。满足不了我的要求。
除非 在第一次点击微信图标的时候,在登录窗口还没有弹出来之前,快速再次点击微信图标,才有一定几率会弹出两个微信窗口。(用专业的话说, 就是在第一个进程没有响应之前,第二个进程没有识别到有程序在运行,会另起一个新进程。这样我们就有两个单独的微信进程可以使用。)
这样我们就获得了两个可以登录的微信窗口,就可以在电脑上使用双开微信了。
因此为了使这种概率事件变成必现事件,我们有必要让每次的微信进程启动都是并行启动的。
二、解决方案
使用cmd脚本并行运行微信启动程序,或者使用bat批处理cmd脚本。
三、相关知识
1、dos命令启动软件
我们正常在dos窗口运行一个exe程序的时候,可以直接输入XX.exe
来进行启动程序。
比如,打开网易云软件
先找到cloudmusic.exe所在的文件夹,然后在dos窗口进入对应的文件夹。然后直接输入cloudmusic.exe
D:\>cd D:\U_Software\entertainment\CloudMusic\CloudMusic
D:\U_Software\entertainment\CloudMusic\CloudMusic>cloudmusic.exe
D:\U_Software\entertainment\CloudMusic\CloudMusic>
然后对应的软件就会打开。
1.1、其他情况:
在dos窗口有时候可以直接输入命令并执行。
比如:打开电脑上的计算器
D:\>calc.exe
1.1.1、解释
在 Windows 操作系统中,calc.exe 是计算器应用程序的文件名。
我们在dos操作窗口直接输入calc.exe 命令的时候,Windows 操作系统会查找 calc.exe 文件并尝试启动它。
我们在执行cmd命令进入dos窗口的时候,本来就是有根据环境变量去寻找对应的cmd.exe文件。
ps: 在 Windows 系统中,操作系统的环境变量 PATH 包含了一些常用的系统目录,其中包括系统自带的一些应用程序所在的目录。
当我们输入某个应用程序的文件名时,在当前的D:\下面找不到对应的程序名,系统会根据 PATH 变量中的路径来查找该文件,并尝试启动它。因此在这种情况下,系统会在 PATH 变量中预设的路径中寻找 calc.exe 文件并成功打开计算器应用程序,即现在是去C:\Windows\system32文件中进行寻找,并找到了calc.exe文件。
补充1:
注意优先级,是先到D盘中进行寻找,找不到了才会去系统变量中寻找。
补充2:
只输入calc,不输入后边的.exe也是可以运行的,它会自动寻找这个名字的程序或者批处理,如果没有这个名字的exe,就会寻找这个名字的bat批处理文件,所以说大家在启动exe或者批处理的时候,最好加上后缀名就是EXE或者BAT,否则的话,有可能会启动出错。
补充3:
使用完整的路径启动exe文件也是可以的。如:C:\Windows\System32\calc.exe
。
1.1.2、简单测试
1、在C:\Windows\system32创建一个简单的脚本文件——2.bat
内容为:
echo test
pause
在D盘中没有2.bat
的情况下,去dos窗口中输入2.bat
。
如图所示,是直接输出了test。
2、此时在D盘再创建一个2.bat
。
内容为:
echo test22222
pause
此时再去dos窗口中输入2.bat
。
此时输出的内容为test22222
。
因此可证其优先级关系。
2、dos中的start命令
dos中的start命令可以启动一个EXE程序,也可以启动一个BAT批处理脚本。
start这个命令是个并行的命令,就是说运行exe的时候它可以同时运行多个。有点类似java程序中的线程的start方法一样。
2.1、start命令的简单介绍
输入命令start /?可以查看这个命令的介绍和参数
这里的参数比较多,感兴趣的同学可以自行研究,因为我们平时用到的也不多。这里简单讲下参数max和min。
参数MAX 以最大化方式启动窗口。
参数MIN 以最小化方式启动窗口。
2.2、同一窗口:串行
创建一个脚本test.bat
。同时在该脚本文件同一个文件夹内创建空白的123.txt
。
内容为:
123.txt
123.txt
pause
执行结果为:
在执行时候,会卡在第一条命令,并启动123.txt
。
当我关闭了123.txt
的时候,命令继续往下执行,并再次弹出了123.txt
。
再次关闭123.txt
,命令继续往下执行。
可以看到该脚本的第二条命令并没有立刻执行,只有在关闭了第一条命令之后,才会继续执行第二条命令。
这个就是一个批处理脚本中一个串行的概念,依次运行EXE,当第一个关闭之后才会运行到第二个。
2.3、同一窗口:并行
此时我们修改脚本,将其内容修改为:
start 123.txt
start 123.txt
pause
执行结果:
命令直接运行到了第三行,并弹出2个123.txt
窗口。
结论:
由此可见,start这个命令并不会卡在这个批处理脚本中,它是并行运行的,不会等待第一个程序结束之后才会运行第二个。
所以有的时候我们在做多个批处理或者运行多个程序的时候必须使用start这个命令。
2.4、不同窗口的数据的传递
2.4.1、创建脚本
创建1.bat
脚本,内容为:
echo %X%
pause
执行结果为:
2.4.2、直接调用脚本测试
在dos窗口先设定x值,然后执行1.bat
脚本。
执行结果:
现象:
这个时候bat会在当前的dos窗口中直接就输出x变量的值。
2.4.3、使用start命令调用脚本测试
在dos窗口先设定x值,然后使用start命令执行1.bat
脚本。
执行结果:
现象:
运行后可以看到新建了一个dos窗口,但是也能直接输出了一个2222这个值。
结论:
start这个命令可以在一个新的窗口中传递当前一些变量的值,这个在多个批处理中,经常会用到。
四、背景问题解决方案执行
创建脚本双开微信.bat
。
内容如下:
@ echo Double wechat
cd D:\example(这里为具体的微信执行程序所在的文件夹)\WeChat
start WeChat.exe
start WeChat.exe
pause
执行结果:
出现两个微信登录窗口。