-
Windows 古老的批处理脚本(.bat)语言,通过cmd.exe解释器运行。
-
@echo off:关闭命令回显,让脚本运行界面更干净。
-
for /f ["参数"] %%变量 in (数据源/命令) do (处理逻辑)执行命令,逐行处理输出
for /f "delims=" %%p in ('where python') do (
set "PYTHON_EXE_PATH=%%p"
goto :PythonFound
)
rem delims= 取消所有分隔符,将整行作为一个完整字段
rem 提取第2个字段和剩余内容
for /f "delims=, tokens=2*" %%a in ("a,b,c,d") do echo %%a %%b # 输出:b c,d
rem 虽然没有直接指定b,当tokens参数指定多个字段时,变量会按字母表顺序自动递增
-
pause:批处理中用于暂停脚本执行,显示提示信息 “请按任意键继续…”
-
>nul 2>&1把标准输出重定向到空设备,把错误输出重定向到标准输出。
-
powershell -Command " "执行powershell命令
-
cd /d "%~dp0"切换到脚本自身所在路径,/d 表示可以跨驱动器切换,%~dp0 是批处理变量,自动获取当前脚本的完整路径(d 代表驱动器,p 代表路径,0 指代当前脚本)。
-
if %ERRORLEVEL% equ 0 ()else() 用于判断上一条命令的执行结果是否成功,上一条命令的退出码为0说明执行成功,非0说明失败。
-
set /p REPO_PATH=<"%TEMP_FILE%"从输入读取第一行内容并将其赋值给变量
-
echo @echo off > "%PROJECT_DIR%\run_watcher.bat"
echo rem --- Auto-generated script, do not modify manually --- >> "%PROJECT_DIR%\run_watcher.bat"
echo echo --- Run at %%date%% %%time%% --- ^>^> "%PROJECT_DIR%\watcher_log.txt" >> "%PROJECT_DIR%\run_watcher.bat"
rem 生成run_watcher.bat批处理文件:并写入@echo off
rem 追加输出一行注释,>是创建文件
rem >>是追加输出,^是转义符,确保>被当作文本写入而非重定向
-
http 请求库
-
response = requests.get(url, timeout=15):向指定url发送请求,设置超时时间 15 秒(超过则抛出异常),返回的响应对象赋值给response。
-
response.raise_for_status():检查响应状态码,2xx不用做任何操作,若为 4xx(客户端错误)或 5xx(服务器错误),则抛出 HTTP 错误异常。
-
response对象包含响应状态码(response.status_code),响应内容(response.text (字符串形式)或 response.content(二进制形式)),响应头(response.headers)
-
headers = {'User-Agent': 'MyNotesProcessor/1.0'}
fields = 'title,authors,citationCount,url'
api_url = f'https://api.semanticscholar.org/graph/v1/paper/arXiv:{arxiv_id}?fields={fields}'
-
headers 定义请求头,User-Agent字段标识请求为我设置的程序名称和版本号MyNotesProcessor/1.0,模拟客户端身份,避免被服务器识别为异常请求。
-
fields 指定需要从 API 获取的论文信息字段(标题、作者、引用量、链接),减少冗余数据返回。
-
data = response.json():将 HTTP 响应的 JSON 格式内容解析为 Python 字典(data),方便后续提取字段。
-
title = data.get('title', 'N/A'):从data中获取title字段值,若不存在则用'N/A'(未获取到)替代。
-
citations = data.get('citationCount', 0):获取引用量citationCount,默认值为 0。
-
url = data.get('url', ''):获取论文链接url,默认值为空字符串。