写在前面:以下的一些脚本是我自己根据chatgpt给出的修改的脚本,实现一些日常的用到的一些简单的功能;

快捷启动-休眠

1
2
3
shutdown /h
::休眠和关机就等于半关机的睡眠,默认事关闭的,使用命令powercfg -hibernate on就可以开启,把on改为off就会关闭
exit

快捷功能-文件加密

说明:说是加密其实就是用就是压缩成带有密码的压缩包而已,不适合大文件,比较大文件压缩也慢;

1
2
3
4
5
6
7
8
9
10
11
@echo off
set desktop="C:\Users\92049\Desktop"
set /p number="是否要压缩到指定位置(是请输入1不是请输入0,默认地址在桌面):"
if %number% equ 1 (
set /p desktop="请输入指定的地址:"
)
set /p name="请输入压缩后的文件名(注:末尾一定加上压缩包后缀):"
set /p password="请输入压缩包密码:"
set address=%desktop%\%name%
rar a %address% %1 -hp%password%
exit

快捷功能-批量文件重命名

说明:有几种情况可能造成功能不能正常进行(为了防止以后用的时候出现问题了然后找不到头脑所以写了这个):

  1. 文件路径中有非法字符可能会造成问题,例如斜杠空格之类的,我这会也想不起多少;
  2. 文件名中含有” - “,两边是有空格的,这会造成语法出错,因为是批处理文件嘛,其中的有些符号也是有可能造成这些问题的例如“01 - 副本.jpg”这种就会;

总的来说就是符号问题,就算文件名是空的都没什么问题,都可以正常执行,目前就只发现这两种可能;

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@echo off
setlocal enabledelayedexpansion

REM 设置初始值
set count=1

REM 检查是否拖入了文件
if "%~1"=="" (
echo 请拖入需要处理的文件到该批处理文件。
pause
exit
)

REM 获取当前系统时间的年、月、日、时、分、秒
for /f "tokens=1-7 delims=/:. " %%a in ('echo %date% %time%') do (
set "year=%%a"
set "month=%%b"
set "day=%%c"
set "wed=%%d"
set "hour=%%e"
set "minute=%%f"
set "second=%%g"
)

set /a "secondPlusOne=second + 1"
if !secondPlusOne! geq 60 (
set "secondPlusOne=00"
)

REM 格式化时间为 "年.月.日.时.分.秒" 的形式
set "formattedTime=%year%.%month%.%day%.%hour%.%minute%.!secondPlusOne!"

REM 循环处理拖入的每个文件
for %%i in (%*) do (
set "file=%%i"

REM 获取文件扩展名(后缀)
set "fileExtension=%%~xi"

REM 使用重命名命令将文件重命名为当前时间格式的名称
ren "!file!" "!formattedTime!_!count!!fileExtension!"

REM 增加序号
set /a "count+=1"

echo "%%~ni!fileExtension!"《------已重命名为------》"!formattedTime!_!count!!fileExtension!"
)

pause

快捷功能-检测指定文件中所有文件的大小

说明:有的文件夹不能检测,因为这个脚本的权限不够,有的文件夹是需要固定权限的,而且这个的输出有一些繁杂,可能不方便看;

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Option Explicit
Dim objFSO, objTextFile
Dim folderPath, outputFilePath, outputfolderPath

MsgBox "在进行检测前请先删除保存目录下的检测报告"

' 指定文件夹路径
folderPath = InputBox("请输入需要检测的文件夹的路径:") ' 接收用户输入的被检测的文件夹的路径

' 指定输出文件路径
outputfolderPath = InputBox("请输入检测报告的保存路径:") ' 接收用户输入的检测报告输出的文件夹路径
outputFilePath = outputfolderPath & "\output.txt"

' 创建文件系统对象
Set objFSO = CreateObject("Scripting.FileSystemObject")


' 检查是否指定了输出路径
If Trim(outputfolderPath) = "" Then
' 未指定输出路径,默认保存到桌面
Dim shell, desktopPath
Set shell = CreateObject("WScript.Shell")
desktopPath = shell.SpecialFolders("Desktop")
outputfolderPath = desktopPath
outputFilePath = outputfolderPath & "\output.txt"
Else
' 指定了输出路径,检查路径是否存在
Dim fsoOutput
Set fsoOutput = CreateObject("Scripting.FileSystemObject")
If Not fsoOutput.FolderExists(fsoOutput.GetParentFolderName(outputFilePath)) Then
MsgBox "指定的输出路径不存在。请重新运行脚本并输入有效的输出路径。", vbCritical
WScript.Quit
End If
End If

' 打开输出文本文件,如果文件存在则追加内容,否则创建新文件
Set objTextFile = objFSO.OpenTextFile(outputFilePath, 8, True)

' 递归遍历文件夹并获取文件和文件夹的大小
TraverseFolder folderPath, 0

' 关闭文本文件
objTextFile.Close

' 释放对象
Set objFSO = Nothing
Set objTextFile = Nothing

' 遍历文件夹并获取文件和文件夹的大小
Function TraverseFolder(folder, indentLevel)
Dim objFolder, objSubFolder, objFile
Dim indent, totalSize, sizeString

indent = String(indentLevel, " ")

' 获取文件夹对象
Set objFolder = objFSO.GetFolder(folder)

' 输出文件夹信息到文本文件
objTextFile.WriteLine indent & "----------------------------"
objTextFile.WriteLine indent & "文件夹: " & objFolder.Path

' 初始化总大小
totalSize = 0

' 处理文件夹中的文件
For Each objFile in objFolder.Files
' 输出文件信息到文本文件
sizeString = FormatSize(objFile.Size)
objTextFile.WriteLine indent & " 该文件为: " & objFile.Name & ", 大小: " & sizeString

' 累加文件大小
totalSize = totalSize + objFile.Size
Next

' 处理子文件夹
For Each objSubFolder in objFolder.SubFolders
' 递归遍历子文件夹
totalSize = totalSize + TraverseFolder(objSubFolder.Path, indentLevel + 2)
Next

' 输出文件夹总大小到文本文件
sizeString = FormatSize(totalSize)
objTextFile.WriteLine indent & "文件夹总大小: " & sizeString
objTextFile.WriteLine indent & "----------------------------"

' 返回文件夹总大小
TraverseFolder = totalSize
End Function

MsgBox "文件大小检查完成,结果保存在:" & outputfolderPath

' 格式化文件大小
Function FormatSize(fileSize)
Dim units, unitIndex

' 文件大小单位
units = Array("B", "KB", "MB", "GB", "TB")

' 循环计算文件大小的单位
unitIndex = 0
Do While fileSize >= 1024 And unitIndex < UBound(units)
fileSize = fileSize / 1024
unitIndex = unitIndex + 1
Loop

' 返回格式化后的文件大小
FormatSize = Round(fileSize, 2) & " " & units(unitIndex)
End Function

后话:以上就是目前写的一些脚本了,感觉还是蛮实用的.