精华内容
下载资源
问答
  • bat批量删除指定文件
    千次阅读
    2021-11-26 08:41:59

    1.删除指定目录下的文件(指定天数之前的30,30为天数,30天之前的文件)

    @echo off  
    forfiles /p "D:\new\1027\release\image" /s /m *.* /d -30 /c "cmd /c del @path"  
    
    /p  为路径
    /s 递归子目录
    /m   "*"   匹配所有的文件和目录
    /D [+ | -]{MM/DD/YYYY | dd} 	
    使用“MM/DD/YYYY”格式选择最后修改日期大于或等于指定日期(+)或小于或等于指定日期(-)的文件。
    也可以选择文件的最后修改日期大于或等于(+)当前日期加上“dd”天,或小于或等于(-)当前日期
    如上 /d -30  三十天之前的
    /c  在每个文件上执行命令,其中命令是命令字符串,用双引号括起来。
    默认命令是“cmd /c echo @file”,它显示文件的名称。

    2.删除指定目录下的空文件夹

    @echo off   
    for /f "tokens=*"  %%i in ('dir /s /b /ad  D:\new\1027\release\image\^|sort|  /r')  do  rd  "%%i"
    for /f "tokens=*"  %%i in ('dir /s /b /ad  D:\new\1027\release\OriImage\^|sort|  /r')  do  rd  "%%i"
    Tokens=*表示删除每行前面的空格。忽略行首的所有空格。
    dir /s /b /ad 显示目录下的所有文件

    3.删除指定目录下的30天之前的所有文件和所有的空文件夹

    @echo off 
    forfiles /p "D:\new\1027\release\image" /s /m *.* /d -30 /c "cmd /c del @path"  
    for /f "tokens=*"  %%i in ('dir /s /b /ad  D:\new\1027\release\image\^|sort|  /r')  do  rd  "%%i"
    for /f "tokens=*"  %%i in ('dir /s /b /ad  D:\new\1027\release\OriImage\^|sort|  /r')  do  rd  "%%i"
    关闭回显
    @echo off
    打开回显
    @echo on
    

    更多相关内容
  • 批量删除文件.bat

    2017-03-16 10:46:50
    批量删除文件.bat
  • 批量删除文件夹下指定文件夹及文件之外的bat脚本
  • BAT批处理(二):批量删除指定文件以及相关简单的语法结构(系统变量errorlevel,变量延迟等) 前两天在使用 VSCode 的时候,看到之前那么多 cpp 编译产生的 exe 可执行文件,于是心生一个念头,我要把它们全部删掉...

    BAT批处理(二):批量删除指定文件以及相关简单的语法结构(系统变量errorlevel,变量延迟等)

    前两天在使用 VSCode 的时候,看到之前那么多 cpp 编译产生的 exe 可执行文件,于是心生一个念头,我要把它们全部删掉,但是又不想一个个地删,便想到了利用 bat 脚本批量删除 exe 文件。于是在搜集了大量资料后,开始了编写。
    首先就是一条简单的 del

    del F:\Code\C++\*.exe
    

    但是发现只能删除掉 C++ 那个文件夹根目录下的 exe 文件,然后发现,在后面加上 /s,表示在当前目录递归删除指定文件,就是还要进入子目录寻找文件。

    /a 根据百属性选择要删除的文件
    /f 强制删除只读度文件
    /s 从所有子目录删除指定文件
    /q 安静模式。删除全局通配符时,不要求确知

    del F:\Code\C++\*.exe /s
    

    运行之后,哗啦啦,全删掉了(在其他盘里测试一下):
    在这里插入图片描述
    本来其实这样就可以了,把这个批处理脚本放到 C++ 文件夹根目录就行了,但是如果多次执行的时候,本来已经没有 exe 文件了,还要执行,就会提示 找不到 G:\test\*.exe,对于强迫症的我当然不能忍受起码提示一个 exe文件已经删完啦 之类的。要这样写势必要进行条件判断,然后,又去找了很多资料。
    一开始搜到一个 errorlevel 的系统变量,会判断你当前这条语句是否执行,如果成功执行该变量的值为 0, 否则是 1-255 之间的某一个值,这里的值主要是根据语句未能成功执行的原因(其实就是跟中断类型差不多)来决定的,一般是 1

    @echo off 
    if ERRORLEVEL 1 goto fail
    if ERRORLEVEL 0 goto success
    goto done
    :fail
    echo exe文件已经没有啦,别删啦~
    goto done
    :success
    echo 正在删除所有烦人的exe文件...
    del F:\Code\C++\*.exe /s
    :done
    echo 执行完成
    

    运行后发现了中文乱码,于是改一下编码为 ANSI在这里插入图片描述
    然后再次执行,发现不管 exe 文件是否被删掉,都会执行 success 标号的语句,说明 del 语句都被执行了,只是找不到文件而已。
    在这里插入图片描述
    这种方法不行那就试试其他方法,用 if exist 条件判断应该可以吧

    @echo off 
    ::if ERRORLEVEL 1 goto fail
    ::if ERRORLEVEL 0 goto success
    if exist F:\Code\C++\*.exe (goto success) else (goto fail)
    goto done
    :fail
    echo exe文件已经没有啦,别删啦~
    goto done
    :success
    echo 正在删除所有烦人的exe文件...
    del F:\Code\C++\*.exe /s
    :done
    echo 执行完成
    

    这里的 ::是注释,当然注释还有其他写法

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

    完美执行。
    然后在之后的其他测试中,若 C++ 根目录下没有 exe 文件,而在其子文件夹下有 exe 文件的话,就出问题了,因为 if exist 那行语句只是判断当前文件夹根目录下是否存在 exe 文件。那该怎么办呢?
    应该要对 C++ 根目录进行递归查找,便是 for 语句:

    @echo off
    cls
    set PATH=F:\Code\C++\
    set FILE=*.exe	
    set cnt=0
    for /R %PATH% %%s in (%FILE%) do (
    	::echo %%s
    	set /a cnt=%cnt%+1
    )
    echo 删除了%cnt%个文件!
    if %cnt% EQU 0 (goto fail) else (goto success)
    goto done
    :fail
    echo exe文件已经没有啦,别删啦~
    goto done
    :success
    echo 正在删除所有烦人的exe文件...
    del *.exe /s
    echo 删除了%cnt%个文件!
    goto done
    :done
    echo 执行完成
    

    for 循环后面的 /R 便是对当前文件夹进行递归查找,若存在后缀名为 .exe 文件,便把计数值+1.然后运行,又出错了。。。
    cnt的值始终为1,这又是为什么呢?
    又查了许多资料,发现 批处理语法中还有叫什么 变量延迟 的语法,具体就是 当我们准备执行一条命令的时候,命令解释器会先将命令读取,如果命令中有环境变量,那么就会将变量的值先读取来出,然后在运行这条命令,如:echo %cnt%,当我们执行这条命令的时候,命令解释器会先读出 %cnt% 的值,然后执行echo,得到的结果是屏幕上显示出 cnt的值。但是,有的时候,我们在执行一条命令的时候,命令解释器将环境变量的值读出来以后,我们的环境变量的值发生了改变,这时个再执行命令就是使用的变量改变前的值,这就不是我们想要的结果了。
    也就是,当 for 语句执行时,命令解释器首先把它变成

    for /R %s in (*.exe) do (set /a cnt=0+1 )
    

    因此在这个循环里面 cnt 就全是0了,这里我们就需要用到 变量延迟 了,设置 setlocal enabledelayedexpansion,然后将需要使用变量延迟的变量两边用 ! 表示,即 set /a cnt=!cnt!+1.
    关闭变量延迟的话就是 setlocal disabledelayedexpansion.
    全部修改完了 bat 程序如下:

    @echo off
    cls
    setlocal enabledelayedexpansion
    set PATH=F:\Code\C++\
    set FILE=*.exe	
    set cnt=0
    for /R %PATH% %%s in (%FILE%) do (
    	::echo %%s
    	set /a cnt=!cnt!+1
    )
    if %cnt% EQU 0 (goto fail) else (goto success)
    goto done
    :fail
    echo exe文件已经没有啦,别删啦~
    goto done
    :success
    echo 正在删除所有烦人的exe文件...
    del %PATH%%FILE% /s
    echo 删除了%cnt%个文件!
    goto done
    :done
    echo 执行完成
    endlocal
    

    大功告成!!

    展开全文
  • windows批量删除指定目录下的指定类型文件 .bat 删除C盘a文件夹下的mp4类型所有文件(含文件下的子目录mp4) del /s /q C:\a\*.mp4 del帮助 进cmd输入del /? 删除一个或数个文件。 DEL [/P] [/F] [/S] [/Q] [/A...

    删除C盘a文件夹下的mp4类型所有文件(含文件下的子目录mp4)

    del /s /q C:\a\*.mp4
    

    windows使用del帮助
    del帮助

    进cmd输入del /?
    
    删除一个或数个文件。
    
    DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
    ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
    
      names         指定一个或多个文件或者目录列表。
                    通配符可用来删除多个文件。
                    如果指定了一个目录,该目录中的所
                    有文件都会被删除。
    
      /P            删除每一个文件之前提示确认。
      /F            强制删除只读文件。
      /S            删除所有子目录中的指定的文件。
      /Q            安静模式。删除全局通配符时,不要求确认
      /A            根据属性选择要删除的文件
      属性          R  只读文件                     S  系统文件
                    H  隐藏文件                     A  存档文件
                    I  无内容索引文件               L  重分析点
                    -  表示“否”的前缀
    
    如果命令扩展被启用,DEL 和 ERASE 更改如下:
    
    /S 开关的显示句法会颠倒,即只显示已经
    删除的文件,而不显示找不到的文件。
    
    展开全文
  • 编写批处理文件时,需要运行一个命令后,延迟一二秒再运行下一个命令,那么该如何...这篇文章就跟大家分享了bat延时删除指定文件夹中的文件的方法,文中介绍的很详细,感兴趣的朋友们可以参考借鉴,下面来一起看看吧。
  • 包含了bat处理批量处理复制、删除、移动文件的功能(比如,批量筛选某些指定文件删除指定的一些文件、移动文件)
  • 批量删除指定大小指定格式文件及文件夹 支持删除文件后删除空文件夹功能
  • 1. 批量删除文件夹及其内的所有文件 删除该目录树下所有指定名称的文件夹和文件夹下所有子文件夹和文件。 双击 bat生成.bat ,进入窗口,进行如下操作: 提示 Choice,输入1,回车 提示 FolderName,输入...

    Batch文件能完成一些批量重复操作。不想在每次用到重新编写一个.bat文件,所以这里用一个工具(.bat)去生成一个用于具体批量操作的.bat文件。
    工具的batch代码在文档的最后面。新建一个文本文档,将代码黏贴到文档中,将文件类型改为bat,这时候就得到一个.bat文件(bat生成.bat)。
    双击 bat生成.bat,能看到如下的界面。这里只实现了4个简单的功能,可以在这个基础上添加新的功能。后面对这4个功能的使用进行说明。
    在这里插入图片描述

    1. 批量删除文件夹及其内的所有文件

    删除该目录树下所有指定名称的文件夹和文件夹下所有子文件夹和文件。
    双击 bat生成.bat,进入窗口,进行如下操作:

    • 提示 Choice,输入1,回车
    • 提示 FolderName,输入要删除的文件夹名称(Delete1),回车
    • 重新提示Choice:如果无其他操作,输入Q,回车,退出窗口;如果还需要其他批量操作,重复上述步骤。
      在这里插入图片描述
      此时会在bat生成.bat文件相同路径下生成一个file.bat文件。
      在这里插入图片描述
      file.bat文件放置于某个目录下,双击file.bat文件,就会删除该目录树下所有名为Delete1(根据自己设置)的文件夹和文件夹下所有子文件夹和文件。

    2. 批量复制

    复制指定文件到所有指定名称的文件夹下,如已有该文件,则进行替换
    双击 bat生成.bat,进入窗口,进行如下操作:

    • 提示 Choice,输入2,回车
    • 提示 CopyFileName,输入要复制文件的文件名,回车
    • 提示CopyFolderName,输入文件复制的目标目录,回车
    • 重新提示Choice:如果无其他操作,输入Q,回车,退出窗口;如果还需要其他批量操作,重复上述步骤。
      在这里插入图片描述
      此时会在bat生成.bat文件相同路径下生成一个file.bat文件。

    file.batNew.txt文件放置于某个目录下,双击file.bat文件,就会将New.txt复制到该目录下所有的Test0文件夹下。

    3. 删除文件

    删除目录树下所有指定文件
    **双击 bat生成.bat,进入窗口,进行如下操作:

    • 提示 Choice,输入3,回车
    • 提示 DelFileName,输入要删除文件的文件名,回车
    • 重新提示Choice:如果无其他操作,输入Q,回车,退出窗口;如果还需要其他批量操作,重复上述步骤。
      在这里插入图片描述
      此时会在bat生成.bat文件相同路径下生成一个file.bat文件。

    file.bat文件放置于某个目录下,双击file.bat文件,就会删除该目录树下所有的New.txt文件。

    4. 重命名文件

    这里的作用就相对较多了。下面对批量修改文件类型进行了详细说明。其实看完批量修改文件类型说明就应该明白了该操作的原理了。
    执行该file.bat(由 bat生成.bat 生成)文件时,会将该目录下的所有文件(不包括文件夹)看成若干个字符串(包括"."以及文件的后缀名),然后进行搜索和替换的工作。

    • 要对所有文件进行操作,File type设置可以使用通配符*
    • 限定待操作文件的类型,如只对txt文件操作,File type可以设置成 *.txt
    • 如果文件名存在多个点“.”,就可能造成预期之外的修改。如new.txt.txt可能内改为new.c.c

    批量修改文件类型

    **双击 bat生成.bat,进入窗口,进行如下操作:

    1. 提示 Choice,输入4,回车
    2. 提示 File type,输入文件类型,如 *,回车
    3. 提示 Find what,输入待替换的文件类型,如 .c,回车
    4. 提示 Replace with,输入要修改为什么类型,如 .txt,回车
    5. 重新提示Choice:如果无其他操作,输入Q,回车,退出窗口;如果还需要其他批量操作,重复上述步骤。
      在这里插入图片描述
      此时会在bat生成.bat文件相同路径下生成一个file.bat文件。

    file.bat文件放置于待修改文件相同目录下,双击双击file.bat文件,就会将该路径下(仅该目录,不包括)的所有c文件修改为txt文件。
    修改前
    在这里插入图片描述
    修改后
    在这里插入图片描述

    @echo off
    cls
    title Create bat file
    set ifo=abcdefghijklmnopqrstuvwxyz0123456789
    
    cls
    color 0A
    :menu
    echo.
    echo      ================================
    echo      Select operation, press Enter
    echo      ================================
    echo.
    echo      1. Delete folder, delete all files in folder.
    echo.
    echo      2. Copy file to folder.
    echo.
    echo      3. Delete files.
    echo.
    echo      4. Rename files.(act on the same level of catalog files)
    echo.
    echo      Q. Quit
    echo.
    
    echo @echo off>file.bat
    
    :ChoiceOperation
    set choice=
    set /p choice=          Choice:
    if not "%choice%"=="" set choice=%choice:~0,1%
    if /i "%choice%"=="1" goto RemoveFolders
    if /i "%choice%"=="2" goto CopyFile
    if /i "%choice%"=="3" goto DeleteFiles
    if /i "%choice%"=="4" goto RenameFiles
    if /i "%choice%"=="Q" goto endd
    echo Invalid, again
    echo.
    goto ChoiceOperation
    
    REM 移除目录树下的文件夹
    :RemoveFolders
    echo RemoveFolders
    set RemFchoice=
    set /p RemFchoice=          FolderName:
    set str1=for /r . %%%%d in (.) do rd /s /q "%%%%d\
    set str1=%str1%%RemFchoice%"
    set str2= %ifo:~28,1%
    set str1=%str1%%str2%
    echo %str1%^>nul >>file.bat
    echo RemoveFolders OK
    echo.
    goto ChoiceOperation
    
    REM 复制文件到目录树下的特定目录
    :CopyFile
    echo CopyFile
    set CopyFileChoice=
    set /p CopyFileChoice=    CopyFileName:
    set CopyFolderChoice=
    set /p CopyFolderChoice=    CopyFolderName:
    set str1=for /r . %%%%a in ("%CopyFolderChoice%") do copy %CopyFileChoice% "%%%%a"
    echo %str1% >>file.bat
    set str2=del /s /a "%CopyFolderChoice%"
    set str3= %ifo:~28,1%
    echo %str2%%str3%^>nul >>file.bat
    echo CopyFile OK
    echo.
    goto ChoiceOperation
    
    REM 删除目录树下的所有特定文件
    :DeleteFiles
    echo DeleteFiles
    set DelFileChoice=
    set /p DelFileChoice=    DelFileName:
    set str1=del /s /a "%DelFileChoice%"
    set str2= %ifo:~28,1%
    echo %str1%%str2%^>nul >>file.bat
    echo DeleteFiles OK
    echo.
    goto ChoiceOperation
    
    REM 重命名文件,作用于同级目录文件
    :RenameFiles
    echo RenameFiles
    set Typechoice=
    set /p Typechoice=          File type(*.type):
    set Findchoice=
    set /p Findchoice=          Find what:
    set Replacechoice=
    set /p Replacechoice=          Replace with:
    set str2=%ifo:~36,1%
    set str1=setlocal enabledelayedexpansion
    echo %str1% >>file.bat
    set str1=for %%%%i in (
    set str2=%Typechoice%
    set str1=%str1%%str2%
    set str2=) do (
    set str1=%str1%%str2%
    echo %str1% >>file.bat
    set str1=set ym=%%%%i
    echo %str1% >>file.bat
    set str1=set ym=!ym:
    set str2=%Findchoice%
    set str3=%Replacechoice%
    set str1=%str1%%str2%=%str3%!
    echo %str1% >>file.bat
    set str1=if %%%%i neq !ym! (ren "%%%%i" "!ym!")
    echo %str1% >>file.bat
    set str1=)
    echo %str1% >>file.bat
    set str1=endlocal
    echo %str1% >>file.bat
    echo RenameFiles OK
    echo.
    goto ChoiceOperation
    
    pause
    
    :endd
    echo exit>>file.bat
    exit
    
    展开全文
  • 根据文件名称批量查询出多层目录下的文件,并且将查询出的文件拷贝到另外一下文件夹下,里面加了“--****”注释,使用时删除即可
  • .bat 批处理文件, 用于删除当前目录下的指定类型或名称的文件或文件夹, 请根据个人需要更改 检索 条件(文件后缀,或文件名称)
  • bat批量删除exe文件

    2020-09-16 20:44:43
    attrib -h d:\*.exe /s del /s /q /f d:\*.exe 把上面两行代码保存到.bat文件或....后回车可得到更详细的解释): /s 从所有子目录删除指定文件。 /q 安静模式。删除全局通配符时,不要求确认。 /f 强制删除只读文件。
  • 批量删除bmp文件.bat

    2020-09-24 13:03:13
    批量删除当前路径下后缀为 .bmp的文件 del /a /f /s /q "*.bmp" *为通配符 /a /f 是强制删除所有属性的文件 /q是无需确认直接删除 要是再加上/s开关,就可以删除子文件加中的文件
  • windows系统自带一个命令forfiles可以根据文件的时间戳来操作文件,forfiles /? 可以查看详细的帮助FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {yyyy/MM/dd | dd}]/p “目录名” 指定...
  • title 去除指定字符之前或之后的文件名 REM 没有传参不执行 if "%1"=="" ( @echo 请传参,要删除的字符 @echo "按任意键退出" pause >nul exit )@echo 将文件名中的[%1]删除掉 @echo -------------------------------...
  • //删除文件 for /f "delims=" %%i in ('dir %path% /a-d /s /b') do ( if not %%~xi==.txt ( if exist "%%i" ( del /s /a /q "%%i" >nul ) ) ) //删除文件夹 for /f "delims=" %%i in ('dir %path% /ad /s /b')...
  • 本工具可以一次性删除同一文件夹下(与本程序所在同一文件夹)所有同一格式的CSV文件多个指定列,效率还可以。是一个不错的CSV格式文件整理工具。
  • windows server系统下可通过文件名称、类型过滤进行批量文件删除操作,简单便捷迅速
  • bat脚本之“一键删除指定的文件夹和文件” 删除文件: 删除download文件夹中的文件,例子如下: del C:\download\*.* 删除文件夹: 删除download文件及其子目录,例子如下: rd /s /q C:\download\*.* /s 参数...
  • 你要的命令: del /a /f /q 目录:\*.后缀 ---------------------...删除D:\我的文档 和 D:\我的文档\桌面 里的所有后缀.doc 就写: del /a /f /q "D:\我的文档\*.doc" "D:\我的文档\桌面\*.doc" --------------------
  • 删除大小和类型一样的文件
  • Windows中批量删除多个指定文件

    千次阅读 2020-08-24 17:21:01
    需求:在对应的文件夹中删除其中不需要的文件(文件夹A下是全部的.json文件,文件夹B下是其A对应需要的.jpg文件,文件夹C下是其A对应不需要的.jpg文件。现根据文件夹C的文件删除文件夹A内对应的json文件)。 过程...
  • 最近在做一个上传项目,然后再本地测试过程中,发觉我的C盘被我不停上传的文件塞满了快,一次次的删除太过麻烦,就想着写一个bat文件删除这些文件,查阅了一些资料,先把我的总结写下来供大家参考。1.针对仅仅是...
  • BAT批量删除文件的前几行

    千次阅读 2017-12-07 22:08:10
    ::设置要操作的文件夹路径如"c:\Nc"及删除的前N行如7 SET TxtDir="E:\Graduation\Thesis Proposal\Mine\毕业论文\graviety compensation data\处理" SET /A N=7 ECHO 开始操作,请稍后... CD /D %TxtDir% ::.txt为...
  • 功能: 删除一个文件夹中所有文件: 只需要将待删除的文件夹拖到脚本中,按回车执行,若干秒后整个文件夹消失了; 针对需要删除上万+, 数十万数百万+小文件尤其有用. 没有这个脚本将花费很久时间才能删完. 有这个脚本分...
  • Excel文件批量删除指定行或列

    千次阅读 2021-01-15 12:24:41
    批量修改一个文件夹下的Excel文件指定行或列,这个只能修改后缀名为.xlsx的文件。 from openpyxl import * import os path = "存放Excel文件的文件夹路径" filenames = os.listdir(path) for filename in ...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 比如我想删除这个文件夹内所有文件中的“ (2)”(包括空格),应该怎样编写批处理呢? ![图片说明](https://img-ask.csdn.net/upload/202009/22/1600754310_399406.png)
  • 新建xxx.txtdel /f /s /q /a 你的文件路径*.删除的后缀eg:del /f /s /q /a K:\UnityProjects\AngryBots_Old\Assets\*.js.old然后保存为xxx.bat即可

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,314
精华内容 2,125
关键字:

bat批量删除指定文件