Batch file 如何在批处理脚本中使用geany同时打开多个文件?

Batch file 如何在批处理脚本中使用geany同时打开多个文件?,batch-file,geany,Batch File,Geany,当我试图用批处理脚本在geany中打开多个文件时,我遇到了一个奇怪的问题 脚本很简单,放在我给他的文件夹中作为列表,在每个文件夹中,它都会在这里用geany打开Makefile。这是有效的;但是,它将首先打开第一个Makefile,然后等待我关闭窗口以打开第二个Makefile,依此类推。 它将在另一个选项卡中打开下一个Makefile,因此在最后我仍然打开了所有makefiles,但我需要关闭每个makefiles之间的窗口,并且我还有很多要打开(这就是为什么我制作了一个脚本--) 有人知道如

当我试图用批处理脚本在geany中打开多个文件时,我遇到了一个奇怪的问题

脚本很简单,放在我给他的文件夹中作为列表,在每个文件夹中,它都会在这里用geany打开Makefile。这是有效的;但是,它将首先打开第一个Makefile,然后等待我关闭窗口以打开第二个Makefile,依此类推。 它将在另一个选项卡中打开下一个Makefile,因此在最后我仍然打开了所有makefiles,但我需要关闭每个makefiles之间的窗口,并且我还有很多要打开(这就是为什么我制作了一个脚本--)

有人知道如何纠正这种奇怪的行为吗

我和geany一起在Linux中实现了它:它工作得很好。 我在Windows中用记事本制作的:效果很好。 但是带geany的windows并不像我希望的那样工作

我也尝试过使用命令
start
,但它会询问我想用哪个程序打开文件,然后什么也不做

这是我的脚本,有点简化:

rem set prog="C:\Program Files\Notepad++\notepad++.exe 
set prog="C:\Program Files\Geany\bin\geany.exe
set FOLDERLIST="Some Folders Names Separate ByASpace"

for /d %%C in (%FOLDERLIST%) do (
    cd %%~C 
    %prog% Makefile
    cd ..
)

所以我希望它一次打开所有文件,而不必关闭每个文件之间的窗口。正如你所看到的,我有一个rem行,记事本是prog,这一行工作正常;杰尼不是。不过,我还是用geany在Linux中实现了这一功能,它可以一次打开所有文件。

我在这个问题中找到了一个可行的答案:

所以,我发现,当geany打开并启动批处理脚本时,它可以完美地工作。然后,在打开所有文件之前,我尝试在批处理脚本中打开geany,但没有成功。然后,带着一些建议,我试着像牧师一样打开它。这就是前面提到的答案的作用

结果如下:

rem set prog="C:\Program Files\Notepad++\notepad++.exe 
set prog="C:\Program Files\Geany\bin\geany.exe
set FOLDERLIST="Some Folders Names Separate ByASpace"

for /d %%C in (%FOLDERLIST%) do (
    cd %%~C 
    start "" %prog% Makefile
    cd ..
)
似乎
start”“
在后台启动文件,然后让脚本继续运行并打开其他文件


注:请注意,没有
”的
启动/B
(也作为答案给出)对我不起作用,因为它询问我要用哪个程序打开文件

好的,由于您在
集合中的引用,您的
for
循环将只迭代一次,并在
%%~C
中返回
一些文件夹名称,这些文件夹名称由aspace
分隔;将其更改为
set“FOLDERLIST=某些文件夹名称以空格分隔”
(请注意开头的引号;对于其他
set
语句也是如此),这样引号本身就不再成为变量值的一部分,或者,如果其中一个列表项本身可能包含空格或其他特殊字符,请执行
set FOLDERLIST=“Some”“文件夹”用空格“
”将名称“分隔”…此外,替换
cd%%~C
(应为
cd/D“%%~C”
)和
cd..
分别替换为
“%%~C”
,并且分别替换为…我的错,引号设置正确,正如您在我的代码中所说的那样。对于
cd
…由于它现在正在工作,我想知道以哪种方式
push
popd
更好。
pushd
存储当前工作目录并更改为新目录,然后
popd
返回原始目录,因此,这些命令的目的是间歇性地更改目录;但是如果您喜欢,也可以使用
cd
。。。