批处理文件遍历所有子目录批量移除文件名和目录名中特殊字符

Windows批处理批量特定文件夹及子文件夹下删除特定后缀的文件 Win批量特定文件夹及子文件夹下删除特定后缀的文件 今天整理代码例子,发现有些文件以前写的批处理文件还是没能执行到删除特定后缀的文件 因此仔细的研究了一下,解决了这个问题 del /a /f /q 目录:\*.后缀 ------------------------------------------------------------- 删除D:\我的文档 和 D:\我的文档\桌面 里的所有后缀.doc 就写: del /a /f /q "D:\我的文档\*.doc" "D.. 阅读详情

从网上下载到的某些资源(感谢那些无私奉献学习资源的人),文件名或目录名有一些特殊字符,如何批量移除呢?
本文介绍利用批处理脚本,遍历指定目录以及指定目录下的所有子目录批量移除文件名和目录名中特殊字符的方法。方便快捷绿色省心~~

遍历当前目录以及所有子目录批量处理

批处理脚本内容

创建一个后缀为 .bat 或 .cmd 的批处理文件,内容如下:

@echo off
setlocal enabledelayedexpansion
chcp 65001

:: 如果要指定绝对路径,用以下两行,注释 set path=. 所在行。也就是用以下两行代替 set path=. 这一行。
:: set path="C:\temp\test"
:: cd "/d %path%"

set path=.
:: echo.&set /p path=please input path:

:: 删除特殊字符,记得替换成你自己需要删除的
set adv=【我是特殊字符】
:: echo.&set /p adv=please input to be delete characters:

call:renameFiles

for /f "delims=" %%i in ('dir /ad/b/s "%path%"') do (
	cd %%i
	call:renameFiles
)

echo.
echo 处理完毕
echo.

pause

:: 子过程一般放在最后,主程序最后要加上exit或跳转语句,避免错误的进入子过程。
:: 如果没有 exit,子程序还会被执行(而不是调用)一次,这样在执行 echo %1 时,因为没有参数,会提示:ECHO is off.
exit

:renameFiles
echo 正在处理的目录:【%cd%】 ...

:: 先删除空格
for /f "delims=" %%i in ('dir /b *.*') do (
    set "foo=%%~nxi"
    set foo=!foo: =!
    ren "%%~fi" "!foo!"
)

for /f "delims=" %%i in ('dir /b *%adv%*') do (
    :: echo %%i
    set var=%%i
    set var=!var:%adv%=!
    echo rename "%%i" to "!var!"
    ren "%%i" "!var!"
)

echo.
goto:eof

批处理脚本说明

  • 该批处理脚本会把脚本中变量 path 定义的路径下,以及该路径下的所有子目录(含子目录下的子目录)下的文件名和目录名中的 adv 定义的字符删除,还一个干净的文件名和目录名。
  • 如果子目录下的子目录名也包含特殊字符,第一次处理时会提示:The system cannot find the path specified.,这是因为目录名被改了,之前读入内存的目录名不存在了,这没有关系,重复执行该脚本,直到不再出现这个提示为止即表示所有目录名和文件名都已经改完了。
  • path=. 表示当前目录,需要把此批处理文件复制到需要处理的顶层文件夹下再双击执行。
  • 如果设置 path 为绝对路径,则脚本文件放哪个位置都行。
  • 也可以每次输入需要处理的绝对路径和需要移除的特殊字符,见下面 path 和 adv 变量的下一行注释代码。

仅处理当前目录下的文件名和目录名

创建一个后缀为 .bat 或 .cmd 的批处理文件,内容如下:

@echo off
:: 仅处理当前目录下的所有文件,所以,需要把该文件 copy 至需要改名的文件夹下,双击执行
setlocal enabledelayedexpansion
chcp 65001

:: 先删除空格
for /f "delims=" %%i in ('dir /b *.*') do (
    set "foo=%%~nxi"
    set foo=!foo: =!
    ren "%%~fi" "!foo!"
)

:: 删除特殊字符,记得替换成你自己需要删除的
set adv=【我是特殊字符】

for /f "delims=" %%i in ('dir /b *%adv%*') do (
    ::echo %%i
    set var=%%i
    set var=!var:%adv%=!
    echo rename "%%i" to "!var!"
    ren "%%i" "!var!"
)

pause

处理过程,以下介绍均为只处理当前目录

特殊字符不带空格

如:test【我是特殊字符】.txt
这类文件用以下脚本即可正常处理,批处理脚本如下:

@echo off
setlocal enabledelayedexpansion
chcp 65001
set adv=【我是特殊字符】

for /f "delims=" %%i in ('dir /b *%adv%*') do (
    ::echo %%i
    set var=%%i
    set var=!var:%adv%=!
    echo rename "%%i" to "!var!"
    ren "%%i" "!var!"
)

pause

特殊字符包含空格

但是,如果需要删除的特殊字符部分有空格,如:1. test - [加微信 xxxx 有妹子].txt,下面的批处理脚本不能达到去除特殊字符的目的。

@echo off
setlocal enabledelayedexpansion
chcp 65001
set adv="- [加微信 xxxx 有妹子]"

for /f "delims=" %%i in ('dir /b *%adv%*') do (
    ::echo %%i
    set var=%%i
    set var=!var:%adv%=!
    echo rename "%%i" to "!var!"
    ren "%%i" "!var!"
)

pause

执行的时候会提示:

rename "1. test - [加微信 xxxx 有妹子].txt" to "1. test - [加微信 xxxx 有妹子].txt"
Press any key to continue . . .

解决

在删除特殊字符前,先将空格删除,然后,处理方式就与删除不带空格的特殊字符相同了。

@echo off
chcp 65001
setlocal enabledelayedexpansion

:: 先删除空格
for /f "delims=" %%i in ('dir /b *.*') do (
    set "foo=%%~nxi"
    set foo=!foo: =!
    ren "%%~fi" "!foo!"
)

:: 删除特殊字符,记得替换成你自己需要删除的
set adv=-[加微信xxxx有妹子]

for /f "delims=" %%i in ('dir /b *%adv%*') do (
    ::echo %%i
    set var=%%i
    set var=!var:%adv%=!
    echo rename "%%i" to "!var!"
    ren "%%i" "!var!"
)

pause

执行结果:

rename "1.test-[加微信xxxx有妹子].txt" to "1.test.txt"
Press any key to continue . . .

批量删除文件名中的空格

  • 会处理当前目录以及所有子目录和子目录下的所有文件,如子目录也带空格,则需要多执行几次,因为子目录会先被修改。
  • 正确的姿势是,在循环里判断是否为文件夹,如果是,则先处理文件夹下的文件,最后处理文件夹名,这一点请读者自行研究。
@echo off&setlocal enabledelayedexpansion

for /f "delims=" %%i in ('dir /s/b *.*') do (
    set "foo=%%~nxi"
    set foo=!foo: =!
    ren "%%~fi" "!foo!"
)

pause

百度 PC 端下载文件完成后,文件名后缀没有被及时修改(其实是下载完成了的),用秕处理脚本删除这些后缀

但并不总是这样,后来的版本没有这个问题,估计官方修复这个 bug 了。批量修改脚本如下:

@ECHO OFF
FOR /F "delims=" %%I IN ('DIR /A-D /B *.baiduyun.p.downloading.*') DO REN "%%~I" "%%~nI"
FOR /F "delims=" %%I IN ('DIR /A-D /B *.baiduyun.p') DO REN "%%~I" "%%~nI"
FOR /F "delims=" %%I IN ('DIR /A-D /B *.baiduyun') DO REN "%%~I" "%%~nI"

bat批处理的注释语句

  1. :: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符)
  2. rem 注释内容(不能出现重定向符号和管道符号)
  3. echo 注释内容(不能出现重定向符号和管道符号)
  4. if not exist nul 注释内容(不能出现重定向符号和管道符号)
  5. :注释内容(注释文本不能与已有标签重名)
  6. %注释内容%(可以用作行间注释,不能出现重定向符号和管道符号)
  7. goto 标签 注释内容(可以用作说明goto的条件和执行内容)
  8. :标签 注释内容(可以用作标签下方段的执行内容)

后记,对变量赋值含中文时找不到文件

现象

批处理文件变量赋值语句set adv=【我是特殊字符】,给变量赋值含有中文时,如果 cmd/PowerShell 的编码为非 UTF-8,则不会正常执行。

解决方法一

通过动态赋值的方式,可以正常执行,具体代码如下:

echo.&set /p adv=please input to be delete characters:

解决办法二

修改 cmd/PowerShell 的默认编码为 UTF-8。

直接修改注册码

一劳永逸,具体可参考:windows 控制台 cmd/PowerShell 中文显示乱码,解决方法

在脚本最前面指定,更具通用性,本文介绍的脚本已经添加

另一种方式,简单粗暴但是非常实用,就是在脚本前面添加 chcp 65001,每次执行批量删除文件名中的特殊字符之前,先设置编码格式。

关于作者

DOS命令(bat批处理脚本)遍历目录、遍历子目录下的文件、遍历数字和遍历文件内容 阅读详情

相关推荐

Flask文件上传安全:os.path.join路径拼接漏洞剖析与防御

在Web应用开发中,文件上传功能是常见的业务需求,但其安全实现至关重要。路径遍历漏洞是Web安全领域的经典威胁之一,攻击者通过构造恶意路径,试图访问或操作应用沙箱之外的文件系统。其核心原理在于开发者对用户输入(如文件名)的过度信任,以及路径处理函数(如Python的os.path.join)的特定行为被误用。理解并防范此类漏洞,对于保障应用数据隔离性、防止敏感信息泄露具有极高的技术价值。本文聚焦于Flask框架下的一个典型场景:当开发者使用os.path.join拼接用户可控的文件名与基础上传目录时,若文件

weixin_34417183的博客 359

bat脚本遍历文件夹删除相同名称文件夹及其子文件

bat脚本遍历文件夹删除相同名称文件夹及其子文件

m0_49187664的博客 3503

Python一行命令搭建HTTP文件服务器:内网文件共享与开发调试利器

HTTP协议作为Web通信的基础,其核心原理是客户端与服务器之间的请求-响应模型。在静态文件服务场景中,服务器根据请求的URL路径映射到本地文件系统,并返回相应的文件内容或目录列表。这种技术价值在于其轻量、快速和零配置的特性,极大地简化了文件共享流程。在开发测试、内网协作、临时文件分发等应用场景中,Python标准库的http.server模块提供了极致的便捷性。通过一行命令即可启动服务,实现局域网内的文件共享与下载,是开发者和运维人员必备的效率工具。本文深入解析了其工作原理、安全配置及常见问题排查,并探讨

weixin_30896511的博客 522

写个bat程序 如果文件名中包含文件夹名则移动文件到文件夹去

可以使用以下BAT程序: @echo off for %%f in (*.txt) do ( set "file=%%nf" set "dir=%%pf" set "dir=!dir:0,-1!" if "!file:0,7!"=="!dir:~0,7!" ( move "%%f" "!dir!" ) )

weixin_42587866的博客 489

Python os模块详解:文件操作、路径处理与系统交互实战指南

在Python编程中,系统交互是连接程序逻辑与底层操作系统的关键技术。通过封装操作系统API,Python提供了跨平台的统一接口,使开发者能够执行文件管理、路径操作等核心功能,极大提升了代码的可移植性和开发效率。这一技术价值在于,它让Python程序能够突破内存沙箱的限制,直接与文件系统、进程和环境变量进行交互,从而支撑起自动化脚本、Web后端资源管理、数据分析文件遍历等广泛的应用场景。本文聚焦于Python os模块,深入解析其文件操作、路径处理等核心功能,并通过实战案例展示如何高效进行系统交互。

weixin_33906657的博客 449

Linux文件系统导航三剑客:cd、pwd、ls深度解析

在Linux命令行环境中,cd、pwd和ls是构建文件系统空间直觉的核心基础命令。它们分别对应路径位移、坐标锚定与目录感知三大底层能力,共同构成无GUI环境下的‘位置感知闭环’。其设计遵循Unix单一职责原则,强调可预测性与组合性,支撑从日常运维到容器调试的广泛场景。深入理解绝对/相对路径解析机制、ls的隐式过滤逻辑(如隐藏文件与权限边界)、cd的符号链接处理(-P参数)及pwd的逻辑/物理路径差异(-L/-P),是突破‘认知断层’、实现精准定位的关键。本文聚焦这三个高频命令的真实决策链与工程实践,助力开发

weixin_33966095的博客 311

视频加密实战:解决AstraCrypt文件名长度限制的完整方案

文件系统与加密技术是数据安全的基础。操作系统对文件路径长度存在固有约束,例如Windows的MAX_PATH限制和Unix系统的文件名长度上限,这是由底层API和文件系统设计决定的。在视频加密场景中,这些限制会直接影响加密工具(如AstraCrypt)的可靠性,因为加密容器需要在头部存储原始文件名元数据,过长的路径或文件名可能导致缓冲区溢出、头部截断或API调用失败。其技术价值在于保障加密流程的健壮性与跨平台兼容性,避免因边界条件引发加密失败或文件损坏。应用场景广泛涉及批量视频加密、自动化脚本处理以及从网络

weixin_33720078的博客 345

Linux文件搜索:find实时扫描与locate快速检索原理及协同实战

Linux文件搜索是系统管理与运维的基础能力,其核心围绕两种技术路径展开:基于文件系统实时遍历的find命令,和依托预建B+树索引数据库的locate命令。前者保障毫秒级时效性与元数据过滤能力(如-mtime、-perm),后者以极低延迟实现海量路径匹配,但依赖updatedb定期更新。二者在I/O模型、权限机制、搜索范围和适用场景上存在本质差异——find适合精准验证与小范围深度排查,locate擅长广域初筛与开发/调试阶段的快速定位。理解其底层原理(inode直读 vs 数据库查表)与典型约束(PRUN

weixin_33766168的博客 475

Windows YOLOv5 训练部署及其问题解决

Windows YOLOv5 训练部署及其问题解决

Eurus_X的博客 1114

C#文件路径操作全解析:从Path类到跨平台实践

文件路径操作是编程中处理文件系统的基础,其核心在于正确解析和构建路径字符串。在C#中,System.IO命名空间提供了Path、Directory、File等核心类来实现路径的拼接、解析和文件操作。理解路径分隔符差异、相对路径解析和存在性检查等原理,对于构建健壮的应用程序至关重要。这些技术能有效避免“文件找不到”等常见错误,提升代码的跨平台兼容性和安全性。在实际开发中,无论是处理配置文件、日志记录还是用户数据存储,都会涉及文件路径操作。本文聚焦C#中的文件路径处理,通过Path.Combine、Direct

weixin_30568591的博客 409

文件上传漏洞攻防实战:从WebShell到防御体系构建

在Web应用安全领域,文件上传功能是常见的高危攻击面。其核心原理在于攻击者利用应用对用户上传文件的处理逻辑缺陷,将恶意文件上传至服务器并执行,从而获取系统控制权。这种漏洞的技术价值在于它直接关联服务器安全,常被用于获取WebShell,进而实施数据窃取、内网渗透等深度攻击。典型的应用场景包括用户头像上传、文档分享、富文本编辑器附件等交互功能。攻击者常通过解析漏洞、文件包含、条件竞争等手法绕过校验,其中WebShell上传是常见目标。本文聚焦文件上传漏洞的攻防对抗,深入剖析其利用手法与多层次防御策略,为开发与

weixin_34259232的博客 421

Python递归遍历目录全解析:os.walk、pathlib与常见坑

文件系统是程序与数据交互的底层入口,而递归遍历目录则是脚本处理文件结构时最常见的基础操作。其原理基于深度优先搜索,不断进入子目录并枚举条目,从而构建出完整的层级清单。掌握这项技术能够大幅提升文件归档、素材扫描、同步工具等场景下的开发效率,尤其面对海量嵌套目录时更为关键。在实际工程中,如何平衡遍历效率与代码可维护性,如何过滤隐藏目录、控制递归深度、规避权限报错等问题,都是开发者绕不开的挑战。Python生态中,os.walk以稳健和灵活著称,手写递归提供完全可控的顺序,pathlib则带来现代面向对象的路径操

weixin_34116110的博客 277

BAT021:批量删除当前目录下文件和文件夹中的特定字符

摘要:批量删除当前目录下文件和文件夹中的特定字符

qq_31762031的博客 3426

shell删除文件除xx外_Shell文件操作

认识Linux的文件目录Linux使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。Linux文件系统结构是从Unix文件结构演进过来的。常见的Linux顶层文件目录:目录用途/虚拟目录的根目录。通常不会在这里存储文件/bin二进制目录,存放许多用户级的GNU工具/boot启动目录,存放启动文件/etc系统配置文件目录/home主目录,Linux在这里创建用户目录/lib库目录,存放系统和应...

weixin_29501693的博客 233

别再傻傻用外部中断了!STM32H743定时器编码器模式4倍频测速保姆级配置(附CubeMX+HAL库代码)

本文详细介绍了STM32H743定时器编码器模式的4倍频测速配置方法,通过CubeMX和HAL库实现高效脉冲计数。相比传统外部中断方案,硬件编码器模式显著降低CPU占用率,提升测速精度,适用于电机控制和运动检测等高要求场景。

weixin_33711647的博客 403

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

Apache文件上传绕过实战:解析特性、.htaccess与混淆技巧

文件上传漏洞是Web安全中的常见攻击面,其核心在于服务器对用户上传文件的处理逻辑存在缺陷。从原理上看,当文件被上传至服务器时,会经历前端校验、后端校验、存储和解析等多个环节,其中Apache服务器与PHP解析器的协作机制尤为关键。Apache通过AddType或AddHandler指令决定文件类型,而解析过程中的后缀匹配逻辑可能成为安全突破口。在技术价值上,深入理解服务器解析机制有助于发现黑名单校验、内容检测等防御措施的不足,从而设计更有效的安全策略。应用场景主要涉及CTF竞赛、渗透测试和漏洞复现,攻击者常

weixin_33738555的博客 426

SuperPoint+SuperGlue在HLoc中的实战效果对比:5大公开数据集测试报告

本文在HLoc框架下,对传统SIFT与深度学习组合SuperPoint+SuperGlue在五大公开数据集上的视觉定位效果进行了实战对比测试。报告详细分析了两种方案在Aachen Day-Night、RobotCar Seasons等不同光照、季节及场景下的表现,揭示了SuperPoint+SuperGlue在应对剧烈光照变化和长期外观变化时的显著优势,并提供了基于HLoc模块化设计的选型与配置策略。

weixin_29093169的博客 425

linux回到桌面的命令符_三 基本的base shell 命令

1、启动shell进入 /etc/passwd 看到知道默认的是base shell ctrl+alt+t 或者双击终端,就进入如下图界面;如果你还是CLI新手,请记住,在输入shell命令之后,需要按回车键才能让shell执行你输入的命令。2、bash 手册man 命令用来访问对应功能读完了手册页,可以点击q键退出。退出手册页之后,你会重新获得shell CLI提示符,这表示shell正在等...

weixin_39542514的博客 641

从IPv6到Tomcat:彻底解决127.0.0.1拒绝连接的完整指南

本文提供了从IPv6到Tomcat的全面指南,帮助开发者彻底解决127.0.0.1拒绝连接的问题。涵盖网络协议栈、服务配置、端口管理等多个层面的排查方法,特别针对Tomcat服务提供了专项解决方案,确保开发者能够快速定位并修复连接问题。

weixin_29207439的博客 472

机场数据治理系列介绍(1):机场行业数据中台中的数据管理顶层设计方案

民航机场行业的数据中台中,有关数据管理顶层设计方案需要结合机场行业的业务特点和技术需求进行具体的设计,今日我们简要考量设计提供一个参考方案:

机场信息系统研究员的专栏 1604

命令逐行显示_三 基本的base shell 命令

1、启动shell进入 /etc/passwd 看到知道默认的是base shell ctrl+alt+t 或者双击终端,就进入如下图界面;如果你还是CLI新手,请记住,在输入shell命令之后,需要按回车键才能让shell执行你输入的命令。2、bash 手册man 命令用来访问对应功能读完了手册页,可以点击q键退出。退出手册页之后,你会重新获得shell CLI提示符,这表示shell正在等...

weixin_29696451的博客 393

【FPGA XDMA AXI Bridge 模式】PCIe:BARs 和 AXI:BARs 含义解析

Xilinx的 DMA/Bridge Subsystem for PCI Express IP核中,支持普通的XDMA模式,但是这种模式只允许主机端发起PCIe 读写请求,FPGA内部无法主动发起读写请求,也即FPGA无法主动读写HOST的内存。而该IP核的另一种模式,AXI Bridge模式则支持HOST主动读写,以及FPGA主动读写。该模式下有个参数需要配置,分别是PCIe:BARs以及AXI:BARs。而上述的普通模式只有PCIe:BARs需要配置。下面详细说说这两个参数的含义。

weixin_45888152的博客 3730

文件上传漏洞攻防全解析:从原理到实战的Web安全核心

文件上传是Web应用中的基础功能,其安全机制涉及客户端与服务端的多重校验。攻击者常通过绕过文件类型校验、利用服务器解析特性等手段,上传恶意脚本获取服务器权限。理解MIME类型、文件头校验等原理,能帮助开发者构建更稳固的防御体系。在金融、社交等涉及用户交互的场景中,文件上传漏洞常成为渗透测试的突破口。本文结合渗透测试实战,深入剖析文件上传漏洞的成因与绕过手法,并探讨Webshell上传的防御策略。

weixin_34235457的博客 408

1553B总线介绍及其硬件方案设计

军用1553B总线 1.简介 简单介绍可参考(https://blog.youkuaiyun.com/ScilogyHunter/article/details/108444231)博主写的很详细。 1553B总线是MIL-STD-1553总线的简称,其中B就是BUS,MIL-STD-1553B总线是飞机内部时分制命令/响应式多路复用数据总线。1553B数据总线标准是20世纪70年代由美国公布的一种串行多路数据总线标准。1553B总线能挂31个远置终端,1553B总线采用指令/响应型通信协议,它有三种终端类型: BC:

小幽余生不加糖 1万+

用 CL_HTTP_CLIENT 正确处理 Cookie,彻底解决 SAP Gateway OData 的 CSRF Token 校验失败

SAP OData 集成中 CSRF Token 校验失败的解决方案 问题现象:使用 Postman 测试 OData 写入成功,但 ABAP 代码调用时出现 CSRF token validation failed 错误。 根本原因:Postman 自动处理 Cookie,而 ABAP 代码仅获取了 CSRF Token 却遗漏了 Cookie 信息。SAP Gateway 要求修改请求必须同时携带 Token 和 Cookie 才能通过校验。 解决方案: 通过 GET 请求同时获取 CSRF Token

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 431
上一篇: Nginx 配置 https 后,http 强制跳转到 https,主域名跳转至带 www 的二级域名
下一篇: windows 控制台 cmd/PowerShell 中文显示乱码,解决方法
uncleAndyChen
博客等级 码龄22年 32粉丝 57原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值