新闻详情

新闻详情

首页 / 资讯中心 / 详情

Windows批处理图片批量重命名:编码、括号与安全实践

发布时间:2026/10/2 10:28:49来源:尧图网络
Windows批处理图片批量重命名:编码、括号与安全实践
1. 为什么“不用软件”反而最难——从一个被忽略的底层逻辑说起你点开这篇标题大概率是刚被某个图片管理需求逼到墙角几百张手机截图、上千张产品图、或者几十个文件夹里混着不同命名规则的照片全等着你手动改名。你搜“图片批量重命名”首页跳出来的全是“XX Rename Master”“Bulk Rename Utility”这类工具点进去还要下载、安装、注册、甚至付费。你心里一紧就改个名字至于吗于是你退回来继续翻页终于看到“用bat文件”“用Excel”“用系统自带功能”这类关键词——这正是我十年前第一次干这事时的状态。但我要先泼一盆冷水“无需辅助软件”不是技术门槛低而是把复杂度从图形界面转移到了你的思维层面。它不考验你点几下鼠标而考验你是否理解Windows文件系统如何解析路径、cmd命令行如何处理空格与特殊字符、批处理脚本的执行生命周期、以及中文编码在不同环节的“存活状态”。那些热词里反复出现的“中文乱码”“括号匹配”“excel无法粘贴”根本不是孤立问题而是这个底层逻辑崩塌后的连锁反应。举个最典型的例子你用Excel生成了一列新名字复制粘贴进记事本保存为.bat双击运行后发现所有带中文的文件名全变成了问号或方块。这不是Excel错了也不是记事本错了更不是你的字体设置错了——是Windows cmd.exe默认使用的是GBK编码代码页936而你用UTF-8编码保存的.bat文件在执行时被强行按GBK解读字节对不上自然乱码。这个细节90%的教程不会提因为它不“酷”但它决定了你整个方案是成功还是当场崩溃。再比如“括号”这个热词。你以为只是打个“”那么简单错。在bat脚本里(和)是语法符号代表代码块%是变量标识符!是延迟扩展开关。如果你的原始文件名里有test(1).jpg而你写的重命名命令是ren test(1).jpg new(1).jpgcmd会直接报错“) was unexpected at this time”。这不是bug是语法解析器在告诉你“兄弟你这括号我得当代码用没空管你文件名”。所以“超详细”三个字不是为了堆砌步骤而是要把这些藏在黑箱里的齿轮一个个拆出来给你看清楚。接下来每一部分我都会告诉你这一步在做什么、为什么必须这么做、如果跳过会出什么具体错误、以及那个错误在cmd窗口里会显示成什么样。因为真正的“本地运行”不是让脚本跑起来就完事而是让你在它报错时能一眼看出是编码问题、路径问题、还是语法问题——这才是“无需辅助软件”背后真正的硬功夫。2. 基础环境准备三步确认法绕过90%的“运行失败”很多人卡在第一步双击.bat文件窗口一闪而过啥也没看见。这不是你的电脑有问题而是你没给它“喘气”的机会。下面这三步是我十年间帮上百人排查“脚本不运行”问题时总结出的铁律。每一步都对应一个高频故障点跳过任何一步后面所有操作都是空中楼阁。2.1 第一步确认cmd.exe的默认代码页——中文不乱码的生死线打开命令提示符WinR → 输入cmd→ 回车输入以下命令chcp你会看到类似这样的输出活动代码页: 936936 GBK编码这是简体中文Windows的默认编码。记住这个数字它将贯穿你整个重命名流程。提示如果你看到的是65001UTF-8或其他数字说明你的系统被手动修改过或者某些软件如Git Bash、WSL改变了默认行为。这种情况下请务必在bat脚本开头第一行加入chcp 936 nul强制切回GBK。否则后续所有中文操作都会失效。为什么必须是936因为Windows资源管理器、文件系统API、以及绝大多数老式工具包括我们即将用到的for循环和ren命令都深度绑定GBK。你用Notepad新建一个UTF-8文件里面写ren 测试.jpg 新名字.jpg保存为.bat双击运行——它一定会失败。原因就是脚本文件是UTF-8编码3个字节表示一个中文但cmd.exe用GBK2个字节表示一个中文去读字节流错位命令直接解析失败。2.2 第二步验证文件路径与空格——那个看不见的“断点”把你要重命名的图片全部放进一个路径极短、无空格、无中文的文件夹里。例如C:\pic\。不要放在我的图片、D:\工作文档\2024年Q3\产品图\这种路径下。然后在该文件夹内新建一个文本文件重命名为test.bat用记事本Notepad打开它注意不是Notepad不是VS Code就是系统自带的记事本输入以下内容echo off echo 当前目录是%cd% dir /b *.jpg pause保存双击运行。你应该看到第一行显示当前目录是C:\pic第二行列出该文件夹下所有.jpg文件名最后停住等待你按任意键退出如果这里出错比如显示“系统找不到指定的路径”或直接闪退问题一定出在路径上。常见陷阱路径含空格如C:\my pics\cmd会把my和pics当成两个参数路径含中文如C:\图片\即使代码页正确某些旧版cmd组件仍会异常文件扩展名大小写不一致*.JPG和*.jpg在Windows下等效但dir /b *.JPG可能漏掉小写文件。注意echo off是隐藏命令回显的开关避免每次执行都打印ECHO is off这种干扰信息pause是让窗口停留的关键没有它脚本执行完立刻关闭你根本看不到错误。2.3 第三步检查文件名中的“隐形杀手”——括号、引号、重音符打开资源管理器进入你的C:\pic\文件夹按Alt3小键盘输入²或直接复制粘贴以下文件名创建一个测试文件file(1).jpgnamequoted.pngcafé.jpg带重音符é然后回到test.bat把dir /b *.jpg改成dir /b *.*再次运行。观察输出如果file(1).jpg没显示出来说明括号触发了语法解析如果namequoted.png显示为name.png或报错说明引号被当作字符串分隔符如果café.jpg显示为caf?.jpg说明重音符在GBK中无对应字符被替换为问号。这些都不是“文件损坏”而是Windows命令行对特殊字符的天然敬畏。它们不会阻止你重命名但会要求你用特定方式“包裹”它们——也就是用英文双引号把整个文件名包起来。这是后续所有重命名命令的铁律只要文件名里有空格、括号、引号、、|、、、^等任意一个字符就必须加双引号。不信试试ren file(1).jpg new.jpg再试试ren file(1).jpg new.jpg结果天壤之别。这三步做完你手上就有了一个绝对干净、可预测的实验环境。它不炫酷但它是你所有后续操作的基石。很多教程跳过这步直接甩出一长串代码结果读者照着抄运行失败然后开始怀疑人生。而你已经站在了问题的上游。3. 核心方法一纯Bat脚本——从零手写掌控每一个字节现在我们进入正题。下面这个脚本是我压箱底的“万能重命名模板”它不依赖任何外部工具只用Windows自带的for、set、ren命令支持序号递增、日期戳、前缀/后缀添加、以及最关键的——安全处理中文、括号、空格。我会逐行拆解告诉你每个符号存在的理由。3.1 模板脚本请严格按此格式复制echo off chcp 936 nul setlocal enabledelayedexpansion :: 配置区请根据你的需求修改以下几行 set SOURCE_DIRC:\pic set FILE_EXT*.jpg set PREFIXIMG_ set START_NUM1001 :: cd /d %SOURCE_DIR% if not exist %SOURCE_DIR% ( echo 错误源文件夹不存在请检查SOURCE_DIR路径。 pause exit /b 1 ) set count%START_NUM% for /f delims %%i in (dir /b /on %FILE_EXT% 2^nul) do ( set oldname%%i set ext%%~xi set newname%PREFIX%!count!!ext! :: 安全重命名始终用双引号包裹完整路径 ren !oldname! !newname! echo 已重命名!oldname! → !newname! set /a count1 ) echo. echo 全部完成共处理 %count% 个文件 pause3.2 关键行深度解析为什么这样写而不是那样写echo off这是批处理的“静音开关”。没有它cmd会把每一行命令本身也打印出来比如执行set count1001时窗口会先显示set count1001再执行。对于大量文件满屏滚动的命令行会掩盖真正的输出信息且影响性能。符号确保这一行本身也不显示。chcp 936 nulchcp是“Change Code Page”的缩写936即GBK编码。nul是重定向输出到“空设备”避免执行时显示“活动代码页: 936”这行干扰信息。这行必须放在setlocal之前因为代码页设置是进程级的会影响后续所有命令的字符解析。setlocal enabledelayedexpansion这是整个脚本的“心脏”。普通%var%变量在脚本启动时就一次性展开称为“立即扩展”而循环内的变量值是动态变化的。如果没有enabledelayedexpansion!count!在循环里永远是初始值。启用后变量必须用!而非%包裹如!count!才能在每次循环中获取最新值。这是处理动态计数的唯一可靠方式。for /f delims %%i in (dir /b /on %FILE_EXT% 2^nul) do (...)这行是“文件列表生成器”。dir /b /on以纯文件名/b、按名称排序/on的方式列出文件。2^nul中的^是转义符把变成字面量2nul表示屏蔽错误输出比如文件夹为空时的“文件未找到”提示。delims告诉for不要按空格或制表符分割把整行当做一个字符串——这是处理含空格文件名的命脉。%%i是循环变量在bat文件中写两个%命令行中写一个。set oldname%%i和set ext%%~xi双引号包裹赋值是防止文件名含空格或特殊字符导致命令解析错误的黄金法则。%%~xi是for变量的“修饰符”~x提取扩展名如.jpgi是变量名。同理%%~ni提取主文件名不含扩展名%%~dpI提取盘符和路径。ren !oldname! !newname!重命名命令。ren是rename的缩写只能在同一文件夹内重命名不能移动。!oldname!和!newname!必须用!包裹因启用了延迟扩展且必须用双引号包裹整个字符串。这是对抗括号、空格、引号的终极防线。没有双引号ren file(1).jpg new(1).jpg会失败有了双引号它稳如泰山。set /a count1/a参数表示进行算术运算。count1比set /a countcount1更简洁安全避免因变量未初始化导致的语法错误。3.3 实操演示从零开始跑通第一个案例假设你有5张照片放在C:\pic\原名分别是截图1.jpg截图2.jpg产品图.jpgreceipt(2024).pngcafe.jpg按模板修改配置区set SOURCE_DIRC:\pic set FILE_EXT*.jpg set PREFIXPHOTO_ set START_NUM1注意FILE_EXT*.jpg只会处理jpgreceipt(2024).png和cafe.jpg注意是cafe不是café会被忽略。如果你想处理所有图片改成*.jpg *.png *.jpeg。保存为rename.bat双击运行。你会看到已重命名截图1.jpg → PHOTO_1.jpg 已重命名截图2.jpg → PHOTO_2.jpg 已重命名产品图.jpg → PHOTO_3.jpg 已重命名cafe.jpg → PHOTO_4.jpgreceipt(2024).png没出现因为扩展名不符cafe.jpg成功了因为cafe是纯ASCII字符无编码风险。经验心得第一次运行前务必先备份原文件夹我习惯在C:\pic\旁建一个C:\pic_backup\用xcopy /e /i C:\pic C:\pic_backup一键复制。bat脚本没有“撤销”按钮重命名是原子操作一旦出错恢复靠的就是这份备份。4. 核心方法二Excel协同法——用表格思维降维打击复杂逻辑Bat脚本强大但面对“按Excel里某列顺序重命名”“根据产品编号颜色尺寸组合新名”这类需求纯脚本会写成天书。这时Excel就是你的可视化编程界面。关键在于Excel不生成文件它生成“可执行的命令行”而你用bat来批量执行这些命令。这种分工既保留了Excel的灵活编辑性又规避了它的“无法直接操作文件系统”的短板。4.1 构建Excel命令生成表四列搞定一切打开Excel推荐使用Microsoft Excel Desktop版Web版和Mac版对换行、编码支持不稳定新建工作表按如下结构填写A列原始文件名B列新文件名C列完整重命名命令D列备注截图1.jpg20240501_001.jpgren 截图1.jpg 20240501_001.jpg手动填写截图2.jpg20240501_002.jpgren 截图2.jpg 20240501_002.jpg手动填写产品图.jpgPROD-A-RED.jpgren 产品图.jpg PROD-A-RED.jpg手动填写A列必须与C:\pic\中文件名完全一致包括大小写、空格、括号。建议直接从文件夹里全选复制粘贴避免手误。B列你的目标新名。可以自由发挥用CONCATENATE函数拼接用TEXT(NOW(),yyyymmdd)插入日期用ROW()生成序号。例如CONCATENATE(IMG_,TEXT(ROW(A1),0000),.jpg)→IMG_0001.jpgTEXT(TODAY(),yyyymmdd)_TEXT(ROW(A1),000).png→20240501_001.pngC列核心输入公式CONCATENATE(ren ,A1, ,B1,)这个公式会自动生成带双引号的完整ren命令。注意是Excel里表示一个英文双引号的写法外层是公式字符串的界定符。拖动填充柄C列会自动为每一行生成命令。D列纯人工备注记录这条重命名的业务逻辑比如“Q3发布会主视觉”“客户A定制图”方便日后追溯。4.2 导出为Bat文件避开“Excel粘贴乱码”的死亡陷阱这是全网99%教程失守的阵地。你不能直接复制C列粘贴到记事本保存为.bat——因为Excel默认用UTF-16 LE编码导出而cmd需要GBK。正确做法全选C列所有命令行CtrlA右键 → 复制不是CtrlC右键复制更稳定。打开系统自带的记事本Notepad。不要直接粘贴先点击记事本菜单栏的“文件”→“另存为”。在“另存为”对话框中文件名填rename_from_excel.bat“保存类型”选“所有文件”“编码”下拉菜单必须选择“ANSI”在简体中文Windows下ANSI GBK点击“保存”然后关闭这个空白记事本。重新打开这个刚保存的rename_from_excel.bat文件此时它已是GBK编码。将刚才复制的C列命令粘贴到这个已保存的文件里保存。提示为什么必须“先存再粘”因为记事本新建文件时默认编码是ANSI但如果你先粘贴再保存它可能根据内容自动识别为UTF-8导致乱码。先存为ANSI再粘贴等于给内容“套了个GBK壳”万无一失。4.3 增强版用Excel VBA一键生成Bat可选进阶如果你每天都要做这个操作可以给Excel加个按钮。按AltF11打开VBA编辑器插入新模块粘贴以下代码Sub GenerateRenameBat() Dim ws As Worksheet Set ws ActiveSheet Dim lastRow As Long lastRow ws.Cells(ws.Rows.Count, C).End(xlUp).Row Dim batContent As String batContent echo off vbCrLf chcp 936 nul vbCrLf cd /d ThisWorkbook.Path vbCrLf Dim i As Long For i 1 To lastRow If ws.Cells(i, 3).Value Then batContent batContent ws.Cells(i, 3).Value vbCrLf End If Next i batContent batContent echo. echo 重命名完成 pause Dim fso As Object Set fso CreateObject(Scripting.FileSystemObject) Dim fileStream As Object Set fileStream fso.CreateTextFile(ThisWorkbook.Path \auto_rename.bat, True, False) fileStream.Write batContent fileStream.Close MsgBox Bat文件已生成 ThisWorkbook.Path \auto_rename.bat End Sub这段VBA会读取当前工作表C列的所有命令自动拼接成一个完整的.bat文件保存在Excel文件同一目录下。它内部强制使用False参数表示ANSI编码彻底规避乱码。运行后双击生成的auto_rename.bat即可。经验心得用Excel法最大的优势是“所见即所得”。你可以随时在B列修改新名字刷新C列公式再重新导出bat全程无需碰代码。我服务过一家电商公司他们用此法每天处理2000商品图按SKU颜色尺码自动生成SKU123-RED-M.jpg效率提升十倍。他们的秘诀是在Excel里建一个“命名规则库”工作表用VLOOKUP自动匹配B列公式变成VLOOKUP(A1,规则库!A:D,4,FALSE)真正实现“一次配置永久复用”。5. 终极排错指南当bat报错时你在看什么再完美的脚本也会遇到报错。此时你的态度决定了是5分钟解决还是5小时抓狂。下面这张表是我整理的bat重命名最常见错误、对应现象、根因分析及修复方案。它不是罗列错误代码而是教你像调试员一样思考。报错现象cmd窗口显示可能根因如何快速定位修复方案The system cannot find the file specified.1.SOURCE_DIR路径错误2.FILE_EXT通配符不匹配3. 文件名含不可见字符如零宽空格运行dir /b /on 你的通配符看是否列出预期文件检查路径末尾是否有\不应有用notepad的“显示所有字符”功能检查文件名) was unexpected at this time.文件名或新名中含(、)、、^等未被双引号包裹在bat中临时加一行echo !oldname!看输出是否完整确保ren命令中!oldname!和!newname!必须用双引号包裹即ren !oldname! !newname!Syntax error.或窗口直接关闭bat文件保存为UTF-8编码用记事本打开bat点击“文件”→“另存为”看“编码”下拉框是否为“ANSI”重新按“先存ANSI再粘贴”流程导出或用notepad将编码转为ANSI/GBKThe filename, directory name, or volume label syntax is incorrect.新文件名含非法字符\/:*?检查B列生成的新名或echo !newname!输出Access is denied.目标文件被其他程序占用如图片查看器、微信/QQ正在预览任务管理器中结束Microsoft.Photos.exe、WeChat.exe等进程关闭所有可能访问图片的软件或重启电脑后立即运行batThe system cannot move the file to a different disk drive.ren命令试图跨盘符重命名如从C:到D:检查SOURCE_DIR是否跨盘符或ren命令中路径是否写错ren只能同盘符内重命名跨盘需用move命令但move不支持通配符需逐个写5.1 一个真实排错案例左上角括号引发的血案上周一位用户发来截图bat运行到第三行就报The system cannot find the file specified.。他提供的文件名是【产品】宣传图.jpg。我一眼注意到【和】——这不是英文方括号[]而是中文全角符号。在GBK编码中全角【占2个字节其字节值与英文[完全不同。cmd在解析ren 【产品】宣传图.jpg new.jpg时会把【当作两个独立字符处理导致字符串截断【产品】宣传图.jpg被解析成【产品】宣传图.jpg自然找不到文件。解决方案在Excel中用SUBSTITUTE函数替换SUBSTITUTE(A1,【,[)同理替换】为]或在bat脚本中用for循环前加预处理for /f delims %%i in (dir /b /on %FILE_EXT% 2^nul) do ( set oldname%%i :: 替换全角括号为半角 set oldname!oldname:【[! set oldname!oldname:】]! ... )这个案例说明报错信息永远只告诉你“发生了什么”而根因往往藏在你习以为常的细节里。全角符号、零宽空格、BOM头、甚至是输入法残留的标点都可能成为拦路虎。养成用echo打印中间变量的习惯是每个bat高手的本能。5.2 高级技巧用PowerShell作为bat的“备胎”如果bat实在搞不定比如需要正则替换、处理超长路径、或调用.NET类库Windows 10/11自带的PowerShell是完美备选。它原生支持UTF-8对中文友好语法也更现代。你可以把bat的最后一行改成powershell -Command {Get-ChildItem C:\pic\*.jpg | ForEach-Object {$i1001; $_ | Rename-Item -NewName {IMG_$i.jpg}}}但这属于“Plan B”不是本文主旨。记住bat是底线是通用语言PowerShell是高配是特需方案。掌握bat你能在任何一台Windows电脑上开工依赖PowerShell你得先确认对方系统版本。6. 安全边界与经验红线哪些事bat坚决不能做最后划几条硬线。这不是限制你的想象力而是帮你避开深坑节省时间。6.1 绝对禁止跨文件夹移动重命名ren命令只能在同一文件夹内改名不能移动。你想把C:\pic\old.jpg改成D:\new\new.jpgbat做不到。强行写ren C:\pic\old.jpg D:\new\new.jpg结果是cmd会尝试在C:\pic\下创建一个名为D:\new\new.jpg的文件——这在Windows下是非法路径直接报错。正确做法用move命令move C:\pic\old.jpg D:\new\new.jpg但move不支持通配符所以你需要先用for循环遍历再对每个文件执行move。代码量翻倍且move在跨盘时是“剪切粘贴”有失败风险。经验心得我的原则是——重命名和移动必须拆成两步。先用bat在源文件夹内完成所有重命名确保新名无冲突、无非法字符再用资源管理器手动拖拽或用robocopy更稳定批量移动。这样每一步都可控出错可逆。6.2 谨慎使用递归处理子文件夹网上很多“一键重命名所有子文件夹图片”的脚本用for /r循环。这很危险。因为你无法预知子文件夹里有什么可能有系统文件、可能有正在被使用的数据库、可能有你完全不认识的.tmp文件。一个ren *.tmp *.bak可能毁掉整个项目。安全替代方案在bat配置区明确指定要处理的子文件夹名如set SUBFOLDERS202404 202405用for %%d in (%SUBFOLDERS%) do (cd /d %SOURCE_DIR%\%%d ...)只处理你白名单里的文件夹或者用dir /ad /b先列出所有子文件夹人工审核后再运行。6.3 永远牢记bat没有事务没有回滚这是最残酷的现实。ren a.jpg b.jpg执行后a.jpg消失b.jpg出现。如果中途断电、死机、或b.jpg已存在导致失败你就会丢失a.jpg——因为ren不是“复制删除”而是直接重命名操作系统内的inode指针。因此我的铁律是每次运行bat前必须备份。用xcopy /e /i C:\pic C:\pic_backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%自动生成带日期的备份文件夹在bat脚本开头加一行if not exist %SOURCE_DIR%_backup xcopy /e /i %SOURCE_DIR% %SOURCE_DIR%_backup自动备份对于重要数据永远用copy代替ren做测试先把ren old.jpg new.jpg改成copy old.jpg new.jpg确认新名无误、文件完整再换回ren。这听起来繁琐但比起花三天恢复误删的客户原图这三分钟值得。我在实际使用中发现最可靠的批量重命名从来不是最炫酷的方案而是最笨、最啰嗦、最冗余的方案。它不追求一行代码解决所有问题而是用多行代码把每个风险点都堵死。当你把“备份”“编码”“双引号”“路径检查”都变成肌肉记忆bat就不再是令人头疼的黑盒子而是一把趁手的瑞士军刀——简单锋利且永远在你掌控之中。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

EndNote导出文献顺序乱?从排序逻辑到Traveling Library实操全解 2026/10/2 13:17:53

EndNote导出文献顺序乱?从排序逻辑到Traveling Library实操全解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ST7102电源芯片驱动移植RK3568平台全解析 2026/10/2 13:17:52

ST7102电源芯片驱动移植RK3568平台全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
京东购物小程序接入全攻略:从领券到下单的实操链路 2026/10/2 13:17:52

京东购物小程序接入全攻略:从领券到下单的实操链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Moore-Penrose广义逆完全指南:从定义到工程实践 2026/10/2 13:17:52

Moore-Penrose广义逆完全指南:从定义到工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
STM32定时器时间基准全链路解析:从晶振到纳秒级精度 2026/10/2 13:17:45

STM32定时器时间基准全链路解析:从晶振到纳秒级精度

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
基于FreeSWITCH与阿里云SDM的语音机器人快速搭建实践 2026/10/2 13:17:45

基于FreeSWITCH与阿里云SDM的语音机器人快速搭建实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉