我需要创建一个批处理文件,在Windows .cmd文件中启动多个控制台应用程序.这可以使用start命令完成.
但是,该命令中有一个路径.我还需要传递有空格的参数.这该怎么做?
例如批处理文件
start "c:\path with spaces\app.exe" param1 "param with spaces"
Run Code Online (Sandbox Code Playgroud) 我有一个使用此文件结构的游戏:
GAME FOLDER
->data
->data->run.bat
Run Code Online (Sandbox Code Playgroud)
我想run.bat在GAME FOLDER中添加一个快捷方式,但如果我移动它,或者其他人安装它,它将无法工作,因为目标是错误的.有没有办法制作目标并相对于GAME FOLDER"开始"?
所以我有一个我想要运行的命令,如下所示:
for /r %n in ("*.vdproj") do "C:/Program Files/Microsoft
Visual Studio 10.0/Common7/IDE/devenv.exe" %n /build "BuildServer"
Run Code Online (Sandbox Code Playgroud)
它似乎工作在它在每个.vdproj文件上运行devenv; 然而,它似乎并行运行并立即返回.这是个问题; 我需要等到它们全部完成才能运行.bat文件中的下一步.我怎么能
1-在运行下一个devenv之前,先让每个devenv'等待'
要么
2-等到devenv.exe全部完成后再继续运行?
我从cmd提示符中尝试了这个命令:
start "c:\program files (x86)\google\chrome\application\chrome.exe" --new-window "http://localhost:8080:/debug?port=5858"
Run Code Online (Sandbox Code Playgroud)
我得到"窗户找不到' - 新窗口'
如果我删除启动命令,它工作正常.如果我保留启动命令但删除--new-window parm,则在我的默认浏览器(即)中打开url.
我已尝试过上述几种变体但无法使其发挥作用.
在新窗口中使用给定URL打开chrome的start命令的正确语法是什么?
这是我想做的事情.
start /wait ((c:\Program Files\NetDrive2\nd2cmd.exe) -c m -t ftp -blabla)
Run Code Online (Sandbox Code Playgroud)
如果我做
start /wait "c:\Program Files\NetDrive2\nd2cmd.exe -c m -t ftp -blabla"
Run Code Online (Sandbox Code Playgroud)
然后出现错误,因为"Program Files"有空格.
如果我做
start /wait "c:\Program Files\NetDrive2\nd2cmd.exe" -c m -t ftp -blabla
Run Code Online (Sandbox Code Playgroud)
然后它解释参数,start因此它也会产生错误.
无论如何在正常的程序语言中重叠像括号一样的等式?
我使用 Tkinter 在 python 中编写了一个简单的 GUI 程序。我们将此程序称为“gui.py”。我的用户使用Portable Python从 USB 密钥在 Windows 计算机上运行“gui.py” ;在主机上安装任何东西都是不可取的。
我希望我的用户通过双击 USB 密钥根目录下的图标来运行“gui.py”。我的用户不关心 python 是什么,如果不需要,他们也不想使用命令提示符。我不希望他们关心 USB 密钥分配的驱动器号。我希望它可以在 XP、Vista 和 7 上运行。
我的第一个丑陋的解决方案是在 USB 密钥的根目录中创建一个快捷方式,并将快捷方式的“目标”属性设置为“(root)\App\pythonw.exe (root)\App\gui.py” ”,但我不知道如何在 Windows 快捷方式中执行相对路径,并且使用像“E:”这样的绝对路径似乎很脆弱。
我的下一个解决方案是在 USB 闪存盘的根目录中创建一个 .bat 脚本,如下所示:
@echo off
set basepath=%~dp0
"%basepath%App\pythonw.exe" "%basepath%\App\gui.py"
Run Code Online (Sandbox Code Playgroud)
这似乎并不关心 USB 密钥分配的驱动器号,但它确实在我的程序运行时使 DOS 窗口保持打开状态。实用,但丑陋。
接下来我尝试了这样的 .bat 脚本:
@echo off
set basepath=%~dp0
start "" "%basepath%App\pythonw.exe" "%basepath%\App\gui.py"
Run Code Online (Sandbox Code Playgroud)
(有关有趣引用的解释,请参见此处)
现在,在 GUI 打开之前,DOS 窗口会在屏幕上短暂闪烁。少一点丑!还是丑啊
真正的男人如何处理这个问题呢?从 USB 记忆棒在 Windows 机器上启动 python Tkinter GUI 的最不丑陋的方法是什么?
编辑:下面的所有答案都非常好(py2exe、pyinstaller、小.exe、.wsf 脚本。).wsf 解决方案是最简单的,所以我现在使用它。如果我想要更漂亮的图标和标准的 .exe 扩展名,我可能最终会切换到其他三种解决方案之一。感谢大家!
我有一个关于 DOS 启动命令的问题。\n我已经阅读过此主题:\n使用 DOS \xe2\x80\x9cstart\xe2\x80\x9d 命令并将参数传递给启动的程序\n使用“start”命令并将参数传递给启动的程序
\n\n但我的问题有点不同。
\n\n我有这个问题:我需要传递需要引用的路径。
\n\n例如,如果路径没有引号,则效果很好:
\n\n启动“”app.exe -选项c:\\ myapp \\ myfile.txt
\n\n但如果路径有双引号,则不起作用。
\n\n我的批处理文件中有这一行:
\n\n启动“” myapp.exe -选项 %mypath%
\n\n当 %mypath% 包含双引号(名称中包含空格或其他字符的路径)时,启动命令会返回非常奇怪的结果。
\n\n谢谢\n桑德罗
\n我知道我必须犯一个简单的语法错误,但是我希望有一个Windows批处理文件可以激活9个R实例并在每个实例中运行不同的例程.我希望这些同时运行(即异步).我可以启动9个命令提示符窗口并在每个窗口中输入一个命令,但看起来像使用START命令我应该能够从单个批处理文件启动它们.
这是我如何启动R的一个实例的示例:
"C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r"
Run Code Online (Sandbox Code Playgroud)
阅读此前一个stackoverflow问题以及之前的问题让我觉得我应该能够这样做:
START "" "C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" /b
Run Code Online (Sandbox Code Playgroud)
这不会返回错误,它只返回一个提示,R永远不会启动.我错过了什么?
我用powershell构建了一个小工具,我通过批处理文件打开它.批处理文件具有以下内容:
powershell -file "D:\scripts\Powershell\xxx.ps1"
Run Code Online (Sandbox Code Playgroud)
现在它打开我的工具,但始终在后台显示命令提示符.我希望在运行我的文件后隐藏CMD.
怎么实现呢?我试过-hidden 但是我的整个程序都被隐藏了:D
谢谢
windows ×6
batch-file ×4
cmd ×2
command-line ×2
scripting ×2
powershell ×1
python ×1
r ×1
shell ×1
shortcuts ×1
tkinter ×1
vdproj ×1