Windows 试图用bat文件打开程序,但总是无效

Windows 试图用bat文件打开程序,但总是无效,windows,batch-file,cmd,Windows,Batch File,Cmd,我是一个拖缆,我需要一些程序来流。打开所有这些文件很烦人,所以我试着把它们放在一个批处理文件中。我查找了流程并进行了跟踪,但每次运行批处理文件时,它都返回无效 这就是我的批处理文件的外观: @echo off cd C:\Program Files "(x86)\obs-studio\bin\64bit" start obs64.exe @echo off cd "C:\Program Files\HexChat" start hexchat.exe @echo off cd "C:\Pro

我是一个拖缆,我需要一些程序来流。打开所有这些文件很烦人,所以我试着把它们放在一个批处理文件中。我查找了流程并进行了跟踪,但每次运行批处理文件时,它都返回无效

这就是我的批处理文件的外观:

@echo off
cd C:\Program Files "(x86)\obs-studio\bin\64bit"
start obs64.exe

@echo off
cd "C:\Program Files\HexChat"
start hexchat.exe

@echo off
cd "C:\Program Files (x86)\Nightbot"
start nightbot.exe

exit
Cmd给我一个错误,说它找不到文件。当我把它自己放入cmd时,它会打开程序


还有一种方法可以将chrome中的应用程序添加到文件中吗?

打开一个命令提示符窗口,然后在此窗口中运行
start/?
,该窗口输出此命令的帮助并解释所有选项

以下批处理文件最有可能工作:

@echo off
start "" "%ProgramFiles(x86)%\obs-studio\bin\64bit\obs64.exe"
start "" "%ProgramFiles%\HexChat\hexchat.exe"
start "" "%ProgramFiles(x86)%\Nightbot\nightbot.exe"
此批处理文件启动三个应用程序,在执行批处理文件时,当前目录也是三个已启动应用程序的当前目录

但是,如果确实需要以应用程序的目录作为当前目录启动每个应用程序,则应使用以下批处理文件:

@echo off
start "" /D"%ProgramFiles(x86)%\obs-studio\bin\64bit" obs64.exe
start "" /D"%ProgramFiles%\HexChat" hexchat.exe
start "" /D"%ProgramFiles(x86)%\Nightbot" nightbot.exe
使用参数
/D
和应用程序文件夹的路径,首先设置目录中启动,就像使用命令CD一样。因此,例如,
hexchat.exe
启动时,此应用程序的当前目录为
C:\Program Files\hexchat

由于此命令将第一个双引号字符串解释为进程的标题,因此在命令START之后需要两个双引号。通过使用
显式指定一个空的标题字符串,导致命令行的其余部分按预期正确解释。我假设这三个应用程序都是GUI应用程序,而不是控制台应用程序,因此在控制台窗口的新命令进程中运行控制台应用程序时,真正有用的标题字符串并不是必需的

%ProgramFiles%
引用预定义的环境变量ProgramFiles,该变量包含64位Windows上64位应用程序的标准程序文件文件夹路径,当批处理文件在64位Windows上以64位
cmd.exe
作为默认值启动时,并在执行命令之前由Windows命令解释器替换通过
C:\Program Files
在Windows计算机上联机

%ProgramFiles(x86)%%
引用预定义的环境变量ProgramFiles(x86),该变量包含64位Windows上32位应用程序的标准程序文件文件夹的始终路径,并在Windows计算机上执行命令行之前被Windows命令解释器替换为
C:\program files(x86)

当然,如果此批处理文件从未与其他人共享,也可以使用计算机中的实际路径而不是环境变量引用

额外提示:
在命令提示符窗口中运行要与
/?
一起作为参数使用的命令,以显示此命令的帮助。有关在命令提示窗口
set
中运行时显示的命令和预定义环境变量的帮助信息的其他来源包括:


cd C:\Program Files”(x86)\obs studio\bin\64位“
无效。使用
cd“C:\Program Files(x86)\obs studio\bin\64位”
(请注意第一个引号的位置)。此外,从风格上讲,您只需要第一个
@echo off
。调试时,不应使用任何
@echo off
。删除这些行可以让您看到CMD发出的错误,您不必到StackOverflow寻求帮助。