为什么要改聊天路径
微信、企业微信、QQ的聊天记录默认都是放在登陆用户的文档目录下面的
登陆用户的文档目录路径
C:\Users\%USERNAME%\Documents
在我的日常工作中,碰到的C盘空间满的问题,近90%是因为聊天记录放在C盘的原因。
微信默认是在线就会把加入的所有群聊的聊天记录自动同步的,而很多人工作和生活都是用的同一个微信账号,除了工作群之外,更是加了不少日常生活的群,大部分生活群的图片和视频数量泛滥成灾,这些图片和视频也会一并同步到电脑上。
即使只是微信账号上只有纯粹的工作群,在工作上需要掺杂大量图片及视频来进行沟通的聊天也不在少数,更是有臭名昭著的转发文件就复制一份文件的问题,至今电脑版仍然没有解决这个问题,微信的聊天记录体积的膨胀速度非常可观。
聊天记录的膨胀速度已经是一个不容忽视的问题。
目前大部分企业在考虑经济及实用性的情况下,新购置的普通文职员工的电脑多为 128GB ~ 256GB 固态硬盘 + 500GB ~ 1TB 机械硬盘 的组合。
不改聊天记录路径的情况下,使用一定时间后, 除去必要的操作系统、安装的软件,128GB ~ 256GB 固态硬盘的剩余容量很容易就被聊天记录占满。
在我的日常工作中,因为C盘满而去处理的电脑里面,微信的聊天记录大部分情况下是占用最大,体积范围大部分分布在 50GB ~ 150GB 左右
我们不能指望用户自己去更改聊天路径、清理不需要的聊天记录。
我们也无法分辨哪些聊天记录是有用的。
在软件里面更改聊天记录路径也需要登陆后才能更改,很不方便。
所以我更倾向于在于新电脑交付使用前,就将聊天记录的路径给改到D盘,以避免后期的聊天记录过大的问题。
决定聊天记录路径的参数
假设想要把聊天记录的路径都成这种格式的路径下面,D盘\Chats\登陆用户名
例如 D:\Chats\tjxwork
下面用这个路径来做演示
微信
当前用户注册表中,微信的聊天记录路径参数为
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Tencent\WeChat]
"FileSavePath"="D:\\Chats\\tjxwork"
此时微信的聊天记录实际路径为
D:\Chats\tjxwork\WeChat Files
注意:
-
微信会在设置的路径下面自动生成一个 WeChat Files 的文件夹,聊天记录在这个文件夹下面
-
如果是用过微信的话,微信可能会在用户文件夹里面存一份3ebffe94.ini文件来保留聊天记录的位置,
如果这份ini文件存在的话,就会优先读取ini文件里面定义的路径。
为确保注册表的参数生效,需要删除这份文件。
微信 放用户文件夹中的 3ebffe94.ini 的文件路径
C:\Users\%USERNAME%\AppData\Roaming\Tencent\WeChat\All Users\config\3ebffe94.ini
企业微信
当前用户注册表中,企业微信的聊天记录路径参数为
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Tencent\WXWork]
"DataLocationPath"="D:\\Chats\\tjxwork\\WXWork"
此时企业微信的聊天记录实际路径为
D:\Chats\tjxwork\WXWork
企业微信就没有微信的优先ini配置文件问题,基本是纯注册表来配置的。
有一个要注意的点是,新版本企业微信新安装的话,貌似会生成一个DataLocation
的项,以前是直接生成 DataLocationPath
指向用户文档下
当DataLocation
当此项为1的时候,而且 DataLocationPath
不存在时,企业微信的聊天记录路径指向用户的AppData
目录下
当DataLocationPath
项存在的情况下,会无视 DataLocation
项,即使删除DataLocation
也没影响。
一般情况,只修改企业微信的聊天记录路径不需要考虑这个问题,但如果想要读取已有的企业微信的聊天记录路径的话,就需要考虑这个问题了。
企业微信注册表,当 DataLocation 为 1,而且 DataLocationPath 不存在时,聊天记录路径为
C:\Users\%USERNAME%\AppData\Roaming\Tencent\WXWork\Data
QQ可能是因为腾讯早期产品的原因,用是ini配置文件来决定聊天记录路径的,配置文件放在 C:\Users\Public\Documents\Tencent\QQ\UserDataInfo.ini
,这个是公用文件下的路径,也就是说所有用户都是使用同一个ini配置文件。
QQ的聊天记录路径基本只有两种模式:
- 放在
C:\Users\%USERNAME%\Documents
下面 - 放在指定的文件路径下
这也就导致指定了QQ的聊天记录,没法在自定义聊天记录路径的情况下按用户名文件夹来区分,好在QQ聊天记录文件夹下基本都是用QQ号来区分开的。
如果想的话,理论上可以写一个脚本在用户登陆时触发,每次登陆都把QQ的聊天记录的路径改到以特定路径的用户名文件夹下来分类,但是同样考虑到用户可能有修改路径的需求,所以暂时不尝试此方法。
如果是企业微信的话,当所有用户企业微信的聊天记录是同一个路径时,你切换用户之后甚至能直接登陆,现在不知道修复这个问题没有。
QQ聊天记录的配置文件路径
C:\Users\Public\Documents\Tencent\QQ\UserDataInfo.ini
QQ聊天记录的配置文件内容
[UserDataSet]
UserDataSavePathType=2
UserDataSavePath=D:\Chats\Tencent Files
此时QQ的聊天记录实际路径为
D:\Chats\Tencent Files
当 UserDataSavePathType 的值是 2 时,代表使用指定的聊天记录路径,此时聊天记录的路径会按 UserDataSavePath 的值生效,
如果值是 1 ,就是直接使用 "C:\Users\%USERNAME%\Documents\Tencent Files" 做为聊天记录路径
基础脚本
下面这两个脚本是在当前用户下修改聊天记录用的
Bat
: 修改微信、企业微信、QQ的聊天记录路径.bat
: 关闭Bat脚本的回显
@echo off
color 0a
echo.
: 定义聊天记录的存放路径
SET Chats_Path=D:\Chats
: 判断D盘是否存在
if exist D:\ (
: 新建用户名文件夹
MD %Chats_Path%\%USERNAME%
: 微信
REG ADD "HKEY_CURRENT_USER\Software\Tencent\WeChat" /v FileSavePath /t REG_SZ /d "%Chats_Path%\%USERNAME%" /f
DEL "C:\Users\%USERNAME%\AppData\Roaming\Tencent\WeChat\All Users\config\3ebffe94.ini"
: 企业微信
REG ADD "HKEY_CURRENT_USER\Software\Tencent\WXWork" /v DataLocationPath /t REG_SZ /d "%Chats_Path%\%USERNAME%\WXWork" /f
: QQ
SET %QQUserDataConfigPath%=C:\Users\Public\Documents\Tencent\QQ\UserDataInfo.ini
MD "C:\Users\Public\Documents\Tencent\QQ"
echo [UserDataSet] > %QQUserDataConfigPath%
echo UserDataSavePathType=2 >> %QQUserDataConfigPath%
echo UserDataSavePath=%Chats_Path%\Tencent Files >> %QQUserDataConfigPath%
)
: 等3秒再关窗口
choice /c abc /t 3 /d a /m "/t wait" /n >nul
PowerShell
# 修改微信、企业微信、QQ的聊天记录路径.ps1
# 聊天记录的存放路径
$Chats_Path = "D:\Chats"
# 判断D盘是否存在
if (Test-Path D:) {
# 新建用户名文件夹
New-Item -Path $Chats_Path\$env:USERNAME -ItemType Directory
# 微信
New-Item -Path "Registry::HKEY_CURRENT_USER\Software\Tencent\WeChat" -Force
New-ItemProperty -Path "Registry::HKEY_CURRENT_USER\Software\Tencent\WeChat" -Name "FileSavePath" -Value "$Chats_Path\$env:USERNAME" -Force
Remove-Item -Path "C:\Users\$env:USERNAME\AppData\Roaming\Tencent\WeChat\All Users\config\3ebffe94.ini" -Force -ErrorAction SilentlyContinue
# 企业微信
New-Item -Path "Registry::HKEY_CURRENT_USER\Software\Tencent\WXWork" -Force
New-ItemProperty -Path "Registry::HKEY_CURRENT_USER\Software\Tencent\WXWork" -Name "DataLocationPath" -Value "$Chats_Path\$env:USERNAME\WXWork" -Force
# QQ
$QQUserDataConfigPath = "C:\Users\Public\Documents\Tencent\QQ\UserDataInfo.ini"
New-Item -Path "C:\Users\Public\Documents\Tencent\QQ\" -Type Directory -Force
"[UserDataSet]" | Out-File -FilePath $QQUserDataConfigPath -Force -Encoding Oem
"UserDataSavePathType=2" | Out-File -FilePath $QQUserDataConfigPath -Force -Append -Encoding Oem
"UserDataSavePath=$Chats_Path\Tencent Files" | Out-File -FilePath $QQUserDataConfigPath -Force -Append -Encoding Oem
# 要注意的QQ这个ini配置文件会受不同语言系统下的文件编码影响(以前是,现在没再次确认)
# 繁体系统下面配置文件和简体系统下面的是不一样(Big5、GB 2312),不能直接复制ini文件过去。
# 所以这里生成的时候也用了 "Oem”" 这个选项。使用系统CMD的默认编码。
}
# 等3秒
Start-Sleep -Seconds 3
参数备注:
-ErrorAction SilentlyContinue
:cmdlet 如何从命令响应非终止错误
-Encoding Oem
:PowerShell 中的字符编码
可以看出来,用Powershell 的原生命令改简单的注册表还是有点麻烦的,特别是新建这种操作,所以我更倾向于直接用Reg.exe,
就上面Bat里面的 REG ADD
命令,在PowerShell脚本里面也是能直接用的。
进阶用法
我常用的修改的方法有几种:
- 写成脚本在当前用户下运行。
- 直接修改默认用户注册表配置模板,新用户登陆时会使用这个模板的路径,缺点是无法按用户名文件夹区分。
- 装好系统后(或者封装镜像时),在管理员下,把修改路径的脚本放在所有用户都能访问公用文件夹内。修改默认用户注册表配置模板,将修改脚本加入注册表启动,登陆运行时就会触发脚本来修改。考虑到用户自己可能会需要自行修改聊天路径,所以在脚本的最后加一条命令,用于删除当前用户注册表中启动脚本的启动项,避免每次登陆都修改一次。
我觉得第3种是最理想的,下面第2种、第3种的脚本示例。
以下脚本请在管理员权限下运行
修改默认用户注册表配置模板
新用户的注册表,其实是通过复制 C:\Users\Default\NTUSER.DAT
这个注册表来生成实现的,所以可以通过提前修改这个注册表的参数来实现提前设置。
但是因为没办法不通过脚本的情况下,提前预处理工号的字段路径,所以,这种改法所有用户的聊天记录都放在一起,没法按用户名文件夹来区分,多用户使用可能会造成混乱。
下面这里把聊天记录都改到了 D:\Chats
微信的聊天记录实际路径为:
D:\Chats\WeChat Files
企业微信的聊天记录实际路径为:
D:\Chats\WXWork
: 更改以后登陆的新用户微信企业微信QQ聊天记录路径到D盘.bat
: 定义聊天记录的存放路径
SET Chats_Path=D:\Chats
: 判断D盘是否存在
if exist D:\ (
: 修改默认用户注册表
REG LOAD HKEY_USERS\User_Default C:\Users\Default\NTUSER.DAT
REG ADD "HKEY_USERS\User_Default\Software\Tencent\WeChat" /v FileSavePath /t REG_SZ /d "%Chats_Path%\" /f
REG ADD "HKEY_USERS\User_Default\Software\Tencent\WXWork" /v DataLocationPath /t REG_SZ /d "%Chats_Path%\WXWork" /f
REG UNLOAD HKEY_USERS\User_Default
: 生成QQ配置文件
SET %QQUserDataConfigPath%=C:\Users\Public\Documents\Tencent\QQ\UserDataInfo.ini
MD "C:\Users\Public\Documents\Tencent\QQ"
echo [UserDataSet] > %QQUserDataConfigPath%
echo UserDataSavePathType=2 >> %QQUserDataConfigPath%
echo UserDataSavePath=%Chats_Path%\Tencent Files >> %QQUserDataConfigPath%
)
首次登陆时修改聊天记录路径
运行效果:会生成一个 "C:\Users\Public\Documents\NewUserChatsPath.bat"
文件,新用户首次登陆时会触发一次 NewUserChatsPath.bat
NewUserChatsPath.bat
脚本与上面的基础脚本基本效果一样 D盘\Chats\登陆用户名
PowerShell
# 用户首次登陆时修改聊天记录路径.ps1
# 聊天记录的存放路径
$Chats_Path = "D:\Chats"
# 判断D盘是否存在
if (Test-Path D:) {
# 生成修改微信与企业微信的聊天记录路径的Bat脚本
$Bat_Script = "C:\Users\Public\Documents\NewUserChatsPath.bat"
"MD D:\Chats\%USERNAME%" | Out-File -FilePath $Bat_Script -Force -Encoding Oem
"REG ADD `"HKEY_CURRENT_USER\Software\Tencent\WeChat`" /v FileSavePath /t REG_SZ /d `"D:\Chats\%USERNAME%`" /f" | Out-File -FilePath $Bat_Script -Force -Append -Encoding Oem
"REG ADD `"HKEY_CURRENT_USER\Software\Tencent\WXWork`" /v DataLocationPath /t REG_SZ /d `"D:\Chats\%USERNAME%\WXWork`" /f" | Out-File -FilePath $BatScript -Force -Append -Encoding Oem
"REG DELETE `"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run`" /v StartuRunNewUserChatsPath /f" | Out-File -FilePath $Bat_Script -Force -Append -Encoding Oem
# 修改默认用户注册表,添加修改聊天路径的Bat脚本的启动信息
REG LOAD HKEY_USERS\User_Default C:\Users\Default\NTUSER.DAT
REG ADD "HKEY_USERS\User_Default\Software\Microsoft\Windows\CurrentVersion\Run" /v StartuRunNewUserChatsPath /t REG_SZ /d "$BatScript" /f
REG UNLOAD HKEY_USERS\User_Default
# 生成QQ聊天记录路径的ini配置文件
$QQUserDataConfigPath = "C:\Users\Public\Documents\Tencent\QQ\UserDataInfo.ini"
New-Item -Path "C:\Users\Public\Documents\Tencent\QQ\" -Type Directory -Force
"[UserDataSet]" | Out-File -FilePath $QQUserDataConfigPath -Force -Encoding Oem
"UserDataSavePathType=2" | Out-File -FilePath $QQUserDataConfigPath -Force -Append -Encoding Oem
"UserDataSavePath=$Chats_Path\Tencent Files" | Out-File -FilePath $QQUserDataConfigPath -Force -Append -Encoding Oem
}
Bat
这个用Bat来写感觉会有点别扭,连空格都要注意,所以建议还是用PowerShell
: 用户首次登陆时修改聊天记录路径.bat
: 聊天记录的存放路径
SET Chats_Path=D:\Chats
: 判断D盘是否存在
if exist D:\ (
: 生成修改微信与企业微信的聊天记录路径的Bat脚本
SET Bat_Script=C:\Users\Public\Documents\NewUserChatsPath.bat
echo SET Chats_Path=%Chats_Path% > %Bat_Script%
echo MD %%Chats_Path%%\%%USERNAME%% >> %Bat_Script%
echo REG ADD "HKEY_CURRENT_USER\Software\Tencent\WeChat" /v FileSavePath /t REG_SZ /d "%%Chats_Path%%\%%USERNAME%%" /f >> %Bat_Script%
echo REG ADD "HKEY_CURRENT_USER\Software\Tencent\WXWork" /v DataLocationPath /t REG_SZ /d "%%Chats_Path%%\%%USERNAME%%\WXWork" /f >> %Bat_Script%
echo REG DELETE "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v StartuRunNewUserChatsPath /f >> %Bat_Script%
: 修改默认用户注册表,添加修改聊天路径的Bat脚本的启动信息
REG LOAD HKEY_USERS\User_Default C:\Users\Default\NTUSER.DAT
REG ADD "HKEY_USERS\User_Default\Software\Microsoft\Windows\CurrentVersion\Run" /v StartuRunNewUserChatsPath /t REG_SZ /d "%Bat_Script%" /f
REG UNLOAD HKEY_USERS\User_Default
: 生成QQ聊天记录路径的ini配置文件
SET %QQUserDataConfigPath%=C:\Users\Public\Documents\Tencent\QQ\UserDataInfo.ini
MD "C:\Users\Public\Documents\Tencent\QQ"
echo [UserDataSet] > %QQUserDataConfigPath%
echo UserDataSavePathType=2 >> %QQUserDataConfigPath%
echo UserDataSavePath=%Chats_Path%\Tencent Files >> %QQUserDataConfigPath%
)
在管理员用户下修改未登陆的已存在用户的聊天路径
: 在管理员用户下修改未登陆的已存在用户的聊天路径.bat
@echo off
color 0a
echo.
: 提示输入你要改的用户和路径
SET /p UserFolder=User Folder Name (tjxwork):
SET /p WeChat_Path=WeChat Path (D:\Chats\tjxwork):
SET /p WXWork_Path=WXWork Path (D:\Chats\tjxwork\WXWork):
: 挂载指定用户的注册表进行修改
REG LOAD HKEY_USERS\User_Temp C:\Users\%UserFolder%\NTUSER.DAT
REG ADD "HKEY_USERS\User_Temp\SOFTWARE\Tencent\WeChat" /v FileSavePath /t REG_SZ /d "%WeChat_Path%" /f
REG ADD "HKEY_USERS\User_Temp\SOFTWARE\Tencent\WXWork" /v DataLocationPath /t REG_SZ /d "%WXWork_Path%" /f
: 下面这3行的作用是打开Regedit.exe让你看看有没有改成功
TASKKILL /F /IM Regedit.exe /T
REG ADD "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v LastKey /t REG_SZ /d "HKEY_USERS\User_Temp\SOFTWARE\Tencent\WeChat" /f
Regedit.exe
: 按任意键完成修改,结束Regedit.exe,卸载用户注册表
Pause
TASKKILL /F /IM Regedit.exe /T
REG UNLOAD HKEY_USERS\User_Temp
: 等3秒再关窗口
choice /c abc /t 3 /d a /m "/t wait" /n >nul
补充
我实际中用的脚本和这些例子的参数命名之类都不太一样,加上时间跨度有点长,命名风格有点乱。
有些在用代码没必要也不方便直接放出,上面写的例子我都是删减并改过的,但没空做太多验证测试,如果有出错的地方劳驾指出,请见谅。
原文作者:tjxwork
原文链接:https://www.tjxblog.com/blog/2023-0001
发布时间:2023-01-10
本文由mdnice多平台发布
标签:QQ,Chats,微信,路径,聊天记录,Tencent,聊天,REG From: https://www.cnblogs.com/tjxwork/p/17163595.html