前言

syncthing官方提供的windows版本在运行时需要保持一个命令行窗口并通过浏览器进行配置的方式进行使用。

但我想要把syncthing设置为跟随windows系统开机自动启动并保持后台运行,最好是作为一个windows服务存在,尽量做到无感使用。

syncthing官方提供了两种方案,第一种是把syncthing添加到windows系统服务(比较麻烦),第二种是通过把快捷方式添加到启动目录(有bug,–no-console参数在windows下无效)

最后经过实践,找到了一个比较方便快捷的设置方式,在此做个简单记录。


设置

第一步:下载文件 & 解压

从synchting官方下载windows版本的压缩包,解压到本地目录,我把它解压到D:\Program Files\Syncthing目录。

第二步:创建脚本

在windows资源管理器中打开启动目录,可以在地址栏中访问%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup,或者用win+r呼出运行窗口以后输入shell:startup

在打开的启动目录下创建一个bat脚本,脚本内容如下:

@echo off
 
if "%1"=="h" goto begin
 
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
 
:begin
 
cd /d D:\Program Files\Syncthing && syncthing.exe serve --no-browser --no-restart --logflags=0

注意bat脚本中最后一行中的文件路径D:\Program Files\Syncthing要根据自己的实际情况调整。

好了,到这里就完成了syncthing在windows系统下的开机自启 & 后台运行了,开机的时候cmd窗口会一闪而过,但syncthing的进程依然在后台运行。

🎉


官方方案bug的修复

官方方案提到的第二种方式,创建一个快捷方式并在快捷方式中添加--no-console --no-browser参数,我实测在windows10下--no-console参数是无效的,但可以通过修改设置来实现。

在自己创建的快捷方式上右键——属性——选项,勾选使用旧版控制台,然后重启系统即可。


参考文章

  1. 使用syncthing多终端数据同步,并设置随系统自动启动
  2. Starting Syncthing Automatically
  3. -no-console option does not work when Windows Terminal is set as Default Terminal application

喝杯奶茶