windos bat脚本 递归批量将文件名中的大写改成小写,从当前脚本所在目录开始递归所有文件,执行完后挂起


以下是一个Windows批处理(bat)脚本,它可以递归地将当前脚本所在目录下所有文件的文件名中的大写字母转换为小写字母,执行完后挂起: ```batch @echo off :: 启用延迟环境变量扩展 setlocal enabledelayedexpansion :: 获取当前脚本所在的目录 set "scriptDir=%~dp0" :: 递归遍历当前目录下的所有文件 for /r "%scriptDir%" %%F in (*) do ( :: 获取文件名(不包含路径) set "fileName=%%~nxF" :: 将文件名中的大写字母转换为小写字母 set "lowerCaseFileName=!fileName:A=a!" set "lowerCaseFileName=!lowerCaseFileName:B=b!" set "lowerCaseFileName=!lowerCaseFileName:C=c!" set "lowerCaseFileName=!lowerCaseFileName:D=d!" set "lowerCaseFileName=!lowerCaseFileName:E=e!" set "lowerCaseFileName=!lowerCaseFileName:F=f!" set "lowerCaseFileName=!lowerCaseFileName:G=g!" set "lowerCaseFileName=!lowerCaseFileName:H=h!" set "lowerCaseFileName=!lowerCaseFileName:I=i!" set "lowerCaseFileName=!lowerCaseFileName:J=j!" set "lowerCaseFileName=!lowerCaseFileName:K=k!" set "lowerCaseFileName=!lowerCaseFileName:L=l!" set "lowerCaseFileName=!lowerCaseFileName:M=m!" set "lowerCaseFileName=!lowerCaseFileName:N=n!" set "lowerCaseFileName=!lowerCaseFileName:O=o!" set "lowerCaseFileName=!lowerCaseFileName:P=p!" set "lowerCaseFileName=!lowerCaseFileName:Q=q!" set "lowerCaseFileName=!lowerCaseFileName:R=r!" set "lowerCaseFileName=!lowerCaseFileName:S=s!" set "lowerCaseFileName=!lowerCaseFileName:T=t!" set "lowerCaseFileName=!lowerCaseFileName:U=u!" set "lowerCaseFileName=!lowerCaseFileName:V=v!" set "lowerCaseFileName=!lowerCaseFileName:W=w!" set "lowerCaseFileName=!lowerCaseFileName:X=x!" set "lowerCaseFileName=!lowerCaseFileName:Y=y!" set "lowerCaseFileName=!lowerCaseFileName:Z=z!" :: 如果文件名发生了变化,则重命名文件 if "!fileName!" neq "!lowerCaseFileName!" ( ren "%%F" "!lowerCaseFileName!" ) ) :: 执行完后挂起,等待用户输入 pause ``` 额外需要注意的逻辑点: 1. 该脚本会递归处理当前脚本所在目录下的所有文件,包括隐藏文件和系统文件,可能会对系统文件或隐藏文件造成影响,使用前请确保备份重要数据。 2. 如果文件名中包含特殊字符(如空格、引号等),脚本可以正常处理,但如果文件名包含一些系统保留字符(如 `*`、`?` 等),可能会导致重命名失败。 3. 由于脚本是通过逐个替换大写字母来实现转换的,如果文件名非常长,可能会有性能问题。在处理大量文件或长文件名时,需要注意脚本的执行时间。 [2025-07-15 15:25:16 | AI写代码神器 | 760点数解答]
- 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 如: 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt中的行 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后为 1:l p[54(811点数解答 | 2024-12-05 12:58:37)259
- 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(531点数解答 | 2024-12-05 13:20:42)255
- 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(495点数解答 | 2024-12-05 13:22:26)233
- 假设pl0语言只使用4位十进制无符号整数。给定一个字符串,使用如下dfa判断其是否为4位无符号整数。 提示,可使用如下二维数组存储dfa。一个状态对应一行;一个输入符号(digit/other)对应一列。每看到输入字符串中一个符号,就以当且状态为行号,看到的符号为列号查询下个状态作为当前状态。 int[][] integerdfa = { //符号,下个状态 {0,0,0}, {0,2,error}, // 状态1 {0,3,final}, // 状态2 {0,4,final}, // 状态3 {0,final,final}, // 状态4 {0,error,error}, // 状态5 {0,0,0} // 状态6 }; 其中,final=5,error=6. 【输入形式】任意字符串。文件名:input.txt。 【输出形式】true/false。文件名:output.txt 【样例输入】5678 【样例输出】true(423点数解答 | 2024-10-07 19:23:58)316
- import win32com.client import os def excel_to_pdf(input_file, output_file): # 确保输入文件存在 if not os.path.exists(input_file): raise FileNotFoundError(f"文件 {input_file} 不存在") # 创建 Excel 应用程序实例 excel = win32com.client.Dispatch("Excel.Application") excel.Visible = False # 不显示 Excel 窗口 try: # 打开 Excel 文件 wb = excel.Workbooks.Open(input_file) # 设置页面布局为 A4 横向 for ws in wb.Worksheets: ws.PageSetup.Orientation = 2 # 2 表示横向 (507点数解答 | 2025-03-10 15:48:12)197
- 作为linux开发,将 /test/a 目录建立软链接到 /test/b 目录,请写出完整的操作命令 ?(194点数解答 | 2023-11-09 18:48:38)222
- 用java编写程序从键盘录入一个字符串,统计该串中有大写字母、小写字母、数字各有多少个。比如:hello12345wor1d大写:2个 小写:8个数字:5个。(384点数解答 | 2024-06-06 23:28:20)188
- 编写程序,对用户输入的英文字符串出现的英文字母进行提取(不区分大小写,重复字母只计一次),并将提取的结果按字母(小写)顺序升序排列后输出。如输入1 miss you,输出i m o s u y (字母间间隔2个空格)(157点数解答 | 2024-10-23 10:28:29)204
- . 计算机科学家和数学家经常使用 10 以外基数的进制系统。编写一个程序,允许用户输入一个数字和一个基数,然后打印出新基数中的数字。使用递归函数 baseconversion(num, base)打印数字。 提示:考虑基数 10。要获得基数 10 时最右边的数字,只需除以 10 后查看余数。例如,153 % 10 是 3。要获取剩余的数字,你可以对 15 重复该过程, 15 是 153 // 10。这个过程适用于任何基数。唯一的问题是要以相反的顺序得到数字(从右到左)。当 num 小于 base 时会发生递归的基本情况,输出就是 num。在一般情况下,函数(递归)打印 num // base 的数字,然后打印 num % base。你应该在连续输出之间放置一个空格,因为基数大于 10 时,会打印出多个字符的“数字”。例如, baseconversion(1234, 16)应打印 4 13 2。(198点数解答 | 2024-11-21 14:20:25)325
- . 计算机科学家和数学家经常使用 10 以外基数的进制系统。编写一个程序,允许用户输入一个数字和一个基数,然后打印出新基数中的数字。使用递归函数 baseconversion(num, base)打印数字。 提示:考虑基数 10。要获得基数 10 时最右边的数字,只需除以 10 后查看余数。例如,153 % 10 是 3。要获取剩余的数字,你可以对 15 重复该过程, 15 是 153 // 10。这个过程适用于任何基数。唯一的问题是要以相反的顺序得到数字(从右到左)。当 num 小于 base 时会发生递归的基本情况,输出就是 num。在一般情况下,函数(递归)打印 num // base 的数字,然后打印 num % base。你应该在连续输出之间放置一个空格,因为基数大于 10 时,会打印出多个字符的“数字”。例如, baseconversion(1234, 16)应打印 4 13 2。(499点数解答 | 2024-11-22 09:58:55)233
- bat 检测到网页上有true 执行程序a(188点数解答 | 2024-11-27 19:06:20)84
- bat 检测到网页上有文字 true 执行程序a(173点数解答 | 2024-11-27 19:07:23)86