Windows:相当于OS X的终端“&”


3

在Windows 7下,有没有办法模拟&OS X终端中角色的行为?
我正在尝试同时运行多个Wget实例:我可以在OS X下没有任何排序问题,因为我有一个Python脚本,它构建一个长字符串,其中Wget的每个实例都是&-separated。当我执行它时os.system()一切都很顺利。
但是,在Windows下,这不起作用,并且实例按顺序运行。这不是我想要的。
我对所有建议cmd.exe持开放态度:黑客,shell端口,更多Python,任何东西,只要创建新的Windows shell窗口。提前致谢!

编辑:我发现文件实际上是使用此方法下载的,但在Windows下,cmd.exe只是突然执行,并让用户接受新命令。有没有办法避免这种情况,并保持控制台“挂起”,直到所有Wget实例完成下载?

编辑2:发布我正在使用的代码。

for track in album.tracks():
    tracknum = track["track_num"]
    tracktit = track["title"]
    URL = track["file"]["mp3-128"]
    filename = str(tracknum) + " - " + tracktit + ".mp3"

现在,在OS X下,这段代码运行得非常好。

    execstr += 'bandcamp-support' +os.sep+ 'wget --tries=0 -O"{}" "{}" -q & '.format(filename,URL)
    os.system('bandcamp-support' +os.sep+ 'wget' execstr[:-3])

相反,在Windows下,这不会复制我在OS X上遇到的行为。

    os.system('start /B bandcamp-support' +os.sep+ 'wget --tries=0 -q -O"{}" "{}"'.format(filename,URL))

1
它不起作用?你究竟输入了什么?
Keltari 2013年

这是我用于每个Wget实例的命令:os.system('start /B bandcamp-support' +os.sep+ 'wget --tries=0 -q -O"{}" "{}"'.format(filename,URL))@Keltari
Jetlef 2013年

我不确定它是否这样做(因为我没有真正使用Windows命令行),但你应该考虑使用powershell而不是cmd.exe,因为它通常具有更多功能。
Evilsoup 2013年

stackoverflow.com/questions/2554514 / ...表明使用docs.python.org/2/library/subprocess.html#popen-objects可以轻松启动多个进程,并且只能同时与多个进程进行交互docs.python.org/2/library/os.html#os.spawnl和v(但不是其他变体)声明也提供了一种在'Unix和Windows上运行NOWAIT进程的'旧'方式
dave_thompson_085 2015年

Answers:


1

如果你是* NIX贝壳的球迷,你可以安装Cygwin和访问所有这些炮弹和工具Cygwin的。你可以用Win-Bash安装一个Bash shell 。但是,我认为Cygwin会更好,因为它有很多功能。


1
Cygwin很有趣,但它需要很多DLL ...那里不存在单个二进制文件吗?或者自己将它打包成二进制文件的方法?现在我知道为什么所有程序员都使用Linux / OS X ...以及为什么每个人都讨厌Windows。:D
Jetlef 2013年

1
我强烈推荐Cygwin,最坏的情况是你可以卸载它。它稳定,你可以得到你想要的所有* NIX工具。Wget不是基础包的一部分,您可以搜索它(在Web工具下获取一个,这是完整的应用程序,而不是基于Perl的实现)。
Keltari 2013年

啊,我放弃了。Windows吓得另外一个人。我想我想要做的事情可以用某种方式完成:使用多个并行作业等待子进程的结束,但是我需要将这些示例调整到Windows,我只是厌倦了这样做。
Jetlef 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.