【问题标题】:Batch script to open multiple programs + multiple browser tabs打开多个程序+多个浏览器选项卡的批处理脚本
【发布时间】:2019-03-12 17:02:32
【问题描述】:

免责声明:我不是为工作而编程,我阅读代码的技能处于初级水平

我发现了一个有用的脚本,可以从初始脚本打开多个标签(在 Chrome 中)。我也想打开多个应用程序(例如 OneNote 和 Outlook)。 * 此调用的“list.txt”文件仅包含四个不同的 url。

@echo off
setlocal enableextensions
set num=4
for /l %%i in (1,1,%num%) do call :start
endlocal
goto :eof

:start
set /p URL=<list.txt
start "" "%URL%"
more +1 list.txt | findstr /r /v "^$" > tmp_list.txt
echo.%URL%>>tmp_list.txt
del list.txt
ren tmp_list.txt list.txt

cd "C:\Program Files (x86)\Microsoft Office\root\Office16\ONENOTE.EXE"
start ONENOTE.EXE

cd "C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE"
start OUTLOOK.EXE

goto :eof

我想我了解浏览器选项卡代码的工作原理,但我怀疑该逻辑会干扰打开 Outlook 和 OneNote,因此每次运行此脚本时,都会打开多个 Outlook 和 OneNote 实例。

非常感谢任何帮助,因为尝试自动化重复的管理工作总是一个好主意。

【问题讨论】:

  • 脚本自上而下运行,除非您告诉他们这样做,否则不会跳转到脚本中的其他位置。想一想 OneNote 和 Outlook 当前在哪里启动,以及为什么它们各自打开四次,然后想一想如果您只想打开一次,这些行必须在哪里。
  • 您有没有想过使用Powershell 和命令Start-Process 来在浏览器中打开多个应用和标签页?
  • 为什么不使用 FOR /F 命令来读取列表?我从未见过如此复杂的代码来读取文件。

标签: windows batch-file automation


【解决方案1】:
@echo off
setlocal enableextensions
set "num=4"
( for /l %%i in (1, 1, %num%) do call :start ) < list.txt

cd /d "C:\Program Files (x86)\Microsoft Office\root\Office16"
start ONENOTE.EXE
start OUTLOOK.EXE

endlocal
exit /b

:start
set /p "URL="
start "" "%URL%"
exit /b

如果将 for 循环括在括号中,并将 stdin 括在 list.txt 中, 然后文件句柄保持打开状态,以便读取 4 行中的每一行 按顺序。 您发布的代码会在每个循环中重新打开文件句柄,以便您获得 每次调用都会读取第一行。

总结

for 循环从 list.txt 中读取 4 行中的每一行。 call :start 接受 set /p "URL=" 所在行的标准输入 将该行存储在名为URL 的变量中。 start 打开 %URL% 的值。调用将返回从调用的行 并将再次循环。

循环完成后,Onenote 会执行,然后 Outlook 会执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多