前言

bat代码使用方法:

  1. 新建文本文档
  2. 把代码复制进去
  3. 另存为,编码格式改为ANSI,文件后缀改为.bat

办公实用代码

强制删除顽固文件

例如删除某个文件时出现文件正在使用,操作无法完成,因为文件在资源管理器中打开,但是又找不到哪条程序在使用该文件。

1
2
3
@echo off
DEL /F /A /Q \\?\%1
RD /S /Q \\?\%1

DEL: 这是告诉计算机删除一个文件的主要命令。

/F: 这是一个开关,告诉计算机强制删除该文件,即使该文件是只读的或目前正在被其他程序使用。

/A: 这是另一个开关,告诉计算机删除具有某种属性的文件。在这种情况下,”A “代表 “归档”,所以该命令将删除具有归档属性的文件。

/Q: 这是一个开关,告诉计算机悄悄地删除文件,而不提示用户确认删除。

\?: 这是一个特殊的语法,告诉计算机对文件名使用Unicode路径语法。这种语法允许计算机处理长于260个字符的文件名。

%1: 这是一个参数,指定你要删除的文件的文件名或路径。符号”%”告诉计算机这是一个参数,而 “1 “则指定它是批处理文件中的第一个参数。

因此,当你用文件名或路径作为参数运行这个命令时,它将强制删除任何带有 “归档 “属性的文件,并在不提示用户确认的情况下悄悄地进行,Unicode路径语法将被用来处理任何长于260个字符的文件名。

@echo off详解:

在批处理文件中,”@echo off “命令是在脚本的开头使用的,用来关闭批处理文件中执行的命令的回音。当批处理文件中的 “echo “被打开时,在脚本中执行的每条命令在执行前都会显示在屏幕上。这在脚本的开发或调试过程中会有帮助。然而,对于大多数批处理文件来说,没有必要在屏幕上显示每条执行的命令,而且会使输出杂乱无章,难以阅读。这就是”@echo off “命令起作用的地方。把”@echo off “放在批处理文件的开头,它可以关闭命令的回声,使输出更干净,更容易阅读。在 “echo off “前面的”@”符号抑制了这个命令本身的回声,所以它不会显示在屏幕上。在这个例子中,”@echo off “命令被用来关闭后面的 “echo “命令的回声。只有 “这是一个批处理文件。”和 “它将执行一些动作。”的信息会显示在屏幕上。”pause “命令用于等待用户在继续执行脚本前按下一个键。”@echo off “命令也适用于 “pause “命令,所以提示用户按键的信息不会显示在屏幕上。

新建文档将代码复制进去,改文档后缀为bat。将顽固文件拖入bat即可删除

设置txt、office背景护眼绿色

1
2
3
4
5
reg add "HKCU\Control Panel\Colors" \
/v Window \
/t REG_SZ \
/d "202 234 206" \
/f

reg:这是用来与Windows注册表互动的命令。
add: 这是reg的一个子命令,可以向注册表添加一个新的子键。
"HKCU\Control Panel\Colors": 这是该命令要修改的注册表键的完整路径。在这种情况下,它指的是位于 “控制面板 “子键中的 “颜色 “子键,它位于 “HKCU”(HKEY_CURRENT_USER)根键之下。引号是用来确保命令正确识别作为单个参数的完整路径。
/v window: 这指定了将被修改或创建的注册表值的名称。在这种情况下,值的名称是 “Window”。
/t REG_SZ:这指定了值的数据类型。在这种情况下,它是一个字符串值,用REG_SZ表示。
/d "202 234 206": 这指定了要存储在该值中的数据。在这种情况下,它是一个由空格分隔的RGB颜色值的字符串。该值数据为 “202 234 206”,对应于淡绿色。
/f: 这个标志用于强制命令覆盖任何现有的值而不提示确认。

恢复成默认的白色背景,把202 234 206改成255 255 255,然后重启电脑

  • 微信多开
1
2
3
4
5
6
7
8
@echo off

start "" "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" /MultiInstance /config:"C:\WeChatData1"

start "" "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" /MultiInstance /config:"C:\WeChatData2"

start "" "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" /MultiInstance /config:"C:\WeChatData3"

把路径换成自己安装微信的路径,想多开几个就复制几行代码。上面代码可以多开3个微信

新建文本文档

1
echo > example.txt

echo命令详解:

在Windows命令提示符或批处理文件中,”echo “命令用于在屏幕上显示一条信息或一个变量的值。

1
echo [message]

“message “参数指定需要在屏幕上显示其值的文本或变量。

例如,如果你在命令提示符下运行echo Hello World命令,它将在屏幕上显示 “Hello World”。同样地,如果你运行echo %username%,它将显示你的Windows用户名。在使用批处理文件创建一个新的文本文件的情况下,”echo “命令被用来创建一个新的、具有指定名称的空文件。>符号用于将 “echo “命令的输出重定向到一个文件,而不是在屏幕上显示。例如,如果你运行echo > example.txt命令,它将在当前目录下创建一个名为 “example.txt “的新空文件。如果该文件已经存在,”echo “命令将用一个空字符串覆盖其内容。

  • 快速获取当前文件夹内所有文件的名字,并把所有名字保存到当前文件夹的file_list.txt文件

要将文件名列表保存到当前文件夹下的文本文件中,可以使用>符号将dir命令的输出重定向到一个文件中,像这样:

1
2
@echo off
dir /b > file_list.txt

>符号告诉命令提示符将dir命令的输出重定向到当前目录中一个名为file_list.txt的文件。/b选项将只列出文件名,没有任何附加信息。

将上述代码保存在一个扩展名为.bat的文件中(如save_files.bat),然后通过双击该文件来运行它。当前目录下所有文件的名称将被保存到同一目录下一个名为file_list.txt的文件中。

  • 批量重命名当前文件夹下的所有文件夹名称,新的文件夹名称按照阿拉伯数字从1开始依次命名
1
2
3
4
5
6
7
@echo off
setlocal EnableDelayedExpansion
set a=0
for /d %%i in (*) do (
set /A a+=1
ren "%%i" "!a!"
)

@echo off: 该命令关闭了命令提示符窗口中的命令回声功能。当echo关闭时,命令提示符不会显示窗口中正在执行的命令。

setlocal EnableDelayedExpansion: 这条命令可以启用脚本中变量的延迟扩展。延迟扩展意味着变量在执行的时候被扩展,而不是在解析的时候。

set a=0: 这条命令将变量a的值设为0。

for /d %%i in (*) do ( ): 这条命令启动一个for循环,遍历当前文件夹中的所有目录,对每个目录执行括号中的命令。变量%i被用来代表循环中的每个目录。

set /A a+=1: 该命令将变量a的值增加1。/A选项指定该命令应将表达式作为一个算术表达式来计算。

ren "%%i" "!a!": 这条命令将%%i所代表的目录重命名为变量a的值。a周围的感叹号用于延迟扩展变量,因此在执行时它的值会被扩展

命令行批量重命名

批量更改文件名的一部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
set /p "str1=请输入要替换的文件(文件夹)名字符串(可替换空格):"
set /p "str2=请输入替换后的文件(文件夹)名字符串(去除则直接回车):"
echo.
echo 正在修改文件(夹)名中,请稍候……
for /f "delims=" %%a in ('dir /s /b ^| sort /+65535') do (
if "%%~nxa" neq "%~nx0" (
set "file=%%a"
set "name=%%~na"
set "extension=%%~xa"
setlocal enabledelayedexpansion
call set "name=%%name:%str1%=%str2%%%"
ren "!file!" "!name!!extension!" 2>nul
endlocal
)
)
exit

截取文件名

以下全部操作都要在命令行中执行,首先在命令行中定位到需要命名的文件夹再执行。所有windows操作系统都支持!

把文件名改成原文件名的前几位

87654321.txt更改为:8765.txt

  • 实现方法:
1
ren *.txt ????.txt

注意:在命令中,问号(?)是一个通配符字符,表示可以匹配任意单个字符。在文件名中使用问号可以代替一个字符或一个数字。所以想要截取前几个字符就需要使用相同个数的问号(?)来占位。

批量加后缀

比如一堆文件,需要设置统一的后缀,常见于文件加版权。

321.txt更改为:321_blogh.tjyll.com.txt

1
ren *.txt ???_blogh.tjyll.com.txt

问号(?)的意义同上,不再赘述。

批量替换文件名

任意字符_错误改成任意字符_正确

1
ren *_错误.txt *_正确.txt

通配符 “*” 表示可以匹配任意长度的字符串,因此可以匹配任何文件名前面的部分,只要文件名以 “_错误.txt” 结尾。

img.jpg更改为:img.jpeg

1
ren *.jpg *.jpeg

一键分类文件

1
2
3
4
5
6
7
@echo off
setlocal EnableExtensions EnableDelayedExpansion
for %%i in (*) do (
md "%%~xi"
move "*%%~xi" "%%~xi"
)
pause

这里面的for循环,遍历当前文件夹中的所有文件,并对每个文件执行括号中的命令。变量%i被用来代表循环中的每个文件。在这个循环中,md命令创建了一个与当前文件扩展名相同的目录,而move命令将当前文件重命名到新创建的目录中,其扩展名为原文件。注意,~修饰符与%%i变量一起使用,可以从文件名中删除任何引号以及驱动器和路径信息,只留下文件扩展名。*字符被用作通配符,在移动命令中包括原始文件名。

pause这条命令暂停了脚本的执行,等待用户按下某个键后再继续。这在从命令行运行脚本时很有用,这样就可以在窗口关闭前查看结果。

  • 打开记事本:

    1
    notepad
  • 打开计算器:

    1
    calc
  • 打开控制面板:

    1
    control
  • 打开任务管理器:

    1
    taskmgr
  • 打开注册表:

    1
    regedit
  • 打开命令提示符:

    1
    cmd
  • 打开计算机管理:

    1
    compmgmt.msc
  • 打开服务:

    1
    services.msc
  • 打开设备管理器:

    1
    devmgmt.msc
  • 打开本地安全策略:

    1
    secpol.msc
  • 打开本地组策略:

    1
    gpedit.msc

根据文件最后更新时间来使用阿拉伯数字命名

最后更新时间距离当前时间越近数字越小,越远数字越大

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@echo off
setlocal enabledelayedexpansion

REM 提示用户输入文件夹路径
set /p "folder_path=请输入文件夹路径: "

REM 检查输入的文件夹路径是否存在
if not exist "%folder_path%" (
echo 错误:文件夹路径不存在。
pause
exit /b
)

REM 获取文件夹中的所有文件并按最后更新时间排序
for /f "tokens=*" %%F in ('dir /b /o:-d "%folder_path%\*"') do (
REM 获取文件的扩展名
set "file_ext=%%~xF"

REM 构造新的文件名
set /a "file_index+=1"
set "new_file_name=!file_index!!file_ext!"

REM 构造文件的完整路径
set "old_file_path=%folder_path%\%%F"
set "new_file_path=%folder_path%\!new_file_name!"

REM 执行文件重命名
ren "!old_file_path!" "!new_file_name!"
)

echo 文件重命名完成。
pause

Win10快速去除桌面快捷方式图标箭头的方法

错误方法,不推荐使用

https://87csn.com/index.php/archives/22/

1
2
3
4
5
6
@Echo off
  color 2
  reg delete HKCR\lnkfile /v IsShortcut /f
  reg delete HKCR\piffile /v IsShortcut /f
  reg delete HKCR\InternetShortcut /v IsShortcut /f
  taskkill /f /im explorer.exe && explorer

代码出处

@Echo off: 这条命令关闭了命令提示符窗口中执行命令时的显示。

color 2: 该命令将命令提示符窗口中显示的文本颜色改为绿色。

reg delete HKCR\lnkfile /v IsShortcut /f: 该命令删除了将.lnk文件与IsShortcut值相关联的注册表键。

reg delete HKCR\piffile /v IsShortcut /f: 该命令删除了将.pif文件与IsShortcut值相关联的注册表键。

reg delete HKCR\InternetShortcut /v IsShortcut /f: 这个命令删除了将.url文件与IsShortcut值相关联的注册表键。

上面三行 “reg delete “是用来删除不同文件类型的指定注册表键中的 “IsShortcut “值。这实质上是删除了这些文件类型的文件图标上的快捷方式箭头覆盖物

taskkill /f /im explorer.exe: 该命令强行终止Windows Explorer进程。

&& explorer: 该命令再次启动Windows Explorer进程。

jzvd16_clipdrop-cleanup

以上的代码虽然可以去除箭头,但是右键此电脑点击管理的时候会出错:该文件没有与之关联的程序来执行操作。请安装一个程序,或者,如果已安装程序,请在"默认程序" 控制面板中创建关联,或者点击任务栏的快捷方式也会出现上面的错误。

  • 过期的解决方法:

https://www.yaxi.net/2015-10-31/612.html

Windows 10 右键管理打不开,提示“该文件没有与之关联的程序 … “ - 知乎 (zhihu.com)

知乎的步骤1运行Windows键+R ,在运行框中输入compmgmt.msc,然后确定,如果弹出了设备管理器对话框,说明系统文件还未丢失,可以继续下一步。反之如果没有就说明系统文件丢失,需要用其他方式修复。也可以通过这个方法打开计算机管理。

  • 正确解决方法

恢复小箭头

桌面新建 txt,把下面的代码复制粘贴到 txt 文件,然后重命名为1.bat,右键以管理员身份运行

1
2
3
4
5
6
taskkill /f /im explorer.exe
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "C:\Windows\system32\imageres.dll,154" /t reg_sz /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "C:\Windows\system32\imageres.dll,154" /t reg_sz /f
reg add "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /t reg_sz /f
reg add "HEKY_CLASSES_ROOT\piffile" /v IsShortcut /t reg_sz /f
start explorer

完成后,桌面图标的小箭头回来了,任务栏的快捷方式也恢复了正常,右键管理也不会出错。

Windows11:该文件没有与之关联的应用来执行该操作 - 知乎 (zhihu.com)

正确去除小箭头

Windows11:该文件没有与之关联的应用来执行该操作 - 知乎 (zhihu.com)

桌面新建 txt,把下面的代码复制粘贴到 txt 文件,然后重命名为2.bat,右键以管理员身份运行。

1
2
3
4
5
6
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "%systemroot%\system32\imageres.dll,197" /t reg_sz /f
taskkill /f /im explorer.exe
attrib -s -r -h "%userprofile%\AppData\Local\iconcache.db"
del "%userprofile%\AppData\Local\iconcache.db" /f /q
start explorer
pause

去除与恢复箭头bat下载

娱乐一下

  • 恶搞表白

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    @echo off
    echo 你的爱人想跟你视频通话!
    pause

    mshta vbscript:msgbox("你好!",64,"你的爱人")(window.close)
    mshta vbscript:msgbox("你爱我吗?",64+4,"你的爱人")(window.close)
    shutdown /r /f
    del 我爱你.vbs
    echo msgbox"你的系统即将重启!",16,"">>我爱你.vbs
    echo msgbox"请马上说出我爱你!",48,"">>我爱你.vbs
    echo text()>>我爱你.vbs
    echo function text()>>我爱你.vbs
    echo dim a>>我爱你.vbs
    echo a=InputBox("请大声说出我爱你!")>>我爱你.vbs
    echo if a="我爱你"then>>我爱你.vbs
    echo Msgbox"我记住了哦。",48,"爱人">>我爱你.vbs
    echo msgbox"你爱我,我爱你...",64,"">>我爱你.vbs
    echo msgbox"毕...",64,"">>我爱你.vbs
    echo msgbox"行了行了!马上就要重启了,请点击确定取消重启。",64,"">>我爱你.vbs
    echo Dim Wsh>>我爱你.vbs
    echo Set Wsh = WScript.CreateObject("WScript.Shell")>>我爱你.vbs
    echo Wsh.Run "cmd.exe /c shutdown /a">>我爱你.vbs
    echo msgbox"通话结束!",16,"视频通话">>我爱你.vbs
    echo else>>我爱你.vbs
    echo msgbox"你必须爱我!",16,"">>我爱你.vbs
    echo text()>>我爱你.vbs
    echo end if>>我爱你.vbs
    echo end function>>我爱你.vbs
    start "" "我爱你.vbs"

真的会关机,不要运行!!!实在好奇,确保电脑闲置时尝试点击!!!或者直接把shutdown行删掉玩玩

参考资料:

https://blog.csdn.net/weixin_39715348/article/details/110583455

https://zhuanlan.zhihu.com/p/85878156

https://www.bilibili.com/video/BV1S5411X7aw/

清理电脑垃圾的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
echo 正在清除系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %windir%\*.bak
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\TemporaryInternet Files\*.*"
del /f /s /q "%userprofile%\LocalSettings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清除系统LJ完成!
echo. & pause

这是一段批处理脚本,用于清除 Windows 系统中的一些临时文件和垃圾文件。下面是对该脚本的详细解释:

1
@echo off

这行命令用于关闭命令行窗口上的回显。

1
echo 正在清除系统垃圾文件,请稍等......

这行命令输出一个文本消息,提示用户正在进行系统垃圾文件清除操作。

1
2
3
4
5
6
del /f /s /q  %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old

这些行命令使用 del 命令删除系统盘中的一些临时文件和垃圾文件,包括 .tmp、._mp、.log、.gid、.chk 和 .old 类型的文件。/f 参数用于强制删除文件,/s 参数用于在子目录中查找并删除文件,/q 参数用于静默删除文件。

.tmp、._mp、.log、.gid、.chk 和 .old 是一些常见的临时文件和垃圾文件的文件扩展名。这些文件通常是由程序或操作系统创建的,用于暂时存储数据或记录系统运行日志等信息。这些文件通常会占用硬盘空间并降低系统性能,因此定期清除它们可以帮助保持系统的运行效率。

以下是这些文件的一些解释:

  • .tmp:这是一个通用的临时文件扩展名,许多程序都会使用它来创建临时文件。
  • .log:这是记录程序或系统运行日志的文件扩展名。
  • .gid:这是 Windows 帮助文件索引文件的文件扩展名。
  • .chk:这是由 Windows 磁盘检查程序创建的磁盘碎片文件。
  • .old:这是一些旧的文件备份或版本文件的文件扩展名。
  • ._mp:这是一些临时媒体文件的文件扩展名,如音频或视频文件。
1
del /f /s /q  %windir%\*.bak

这行命令删除 Windows 目录中的所有 .bak 类型的文件,同样使用了 /f、/s 和 /q 参数。

.bak 是备份文件的文件扩展名,通常用于表示原始文件的备份或副本。在许多应用程序中,当您保存现有文件时,该应用程序会自动生成具有 .bak 扩展名的备份文件,以便在需要时恢复早期版本的文件。备份文件也可以手动创建,以便在进行更改之前保留原始文件的副本。备份文件通常用于数据恢复或保护数据免受意外修改或数据损坏的影响。

1
del /f /q %userprofile%\recent\*.*

这行命令删除当前用户的最近使用文档列表中的所有文件,同样使用了 /f 和 /q 参数。

1
2
3
del /f /s /q  "%userprofile%\Local Settings\TemporaryInternet Files\*.*"
del /f /s /q "%userprofile%\LocalSettings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"

这些行命令删除当前用户的 Internet Explorer 临时文件、临时文件夹和最近使用文档列表中的文件,同样使用了 /f、/s 和 /q 参数。

1
2
echo 清除系统LJ完成!
echo. & pause

这两行命令输出一个文本消息,提示用户系统垃圾文件清除完成。第二行使用了 & 符号来在一行中执行两个命令:echo. 用于输出一个空行,pause 用于暂停命令行窗口的执行,等待用户按下任意键继续。