bat 文件执行cmd命令的几个应用(二)

注:以下所有 bat 命令,均可在 🌏 本站下载 - 按需下载即可!**
bat 文件创建方式:新建文本文件,写入相应命令,另存为 .bat 文件,编码修改为 ANSI 即可!

image.png

复制指定格式文件到某目录下

  • 注:遇到同名文件时,文件会被覆盖!
@echo off
set /p f=请输入起始文件夹:
set /p m=请输入目标文件夹:
set /p i=请输入文件格式:
pushd %f%
for /r %%a in (*.%i%) do (zz
    XCOPY /Y "%%a" "%m%"
)
popd
pause

按格式批量复制文件,并以原文件名+递增数字命名

@echo off
setlocal enabledelayedexpansion
set /p f=请输入起始文件夹:
set /p m=请输入目标文件夹:
set /p i=请输入文件格式: 
set in=0
pushd "!f!"
for /r %%a in (*.!i!) do (
    set /a out=!in!+1
    set in=!out!
    echo F| XCOPY /Y "%%a" "!m!\%%~na_!in!.%i%"
)
pause

按格式批量复制文件,同名文件重命名

setlocal enabledelayedexpansion
set /p f=请输入起始文件夹:
set /p m=请输入目标文件夹:
set /p i=请输入文件格式: 
set in=0
pushd "!f!"
for /r %%a in (*.!i!) do (
    if exist "!m!\%%~nxa" (
        set /a out=!in!+1
        set in=!out!
        echo F| XCOPY /Y "%%a" "!m!\%%~na_!in!.%i%"
    ) else (
        XCOPY /Y "%%a" "!m!"
    )
)
pause

按格式批量复制文件,并以随机数命名

@echo off
setlocal EnableDelayedExpansion 
set /p f=请输入起始文件夹:
set /p m=请输入目标文件夹:
set /p i=请输入文件格式:
pushd %f%
for /r %%a in (*.%i%) do (
    echo F| XCOPY /Y "%%a" "%m%\!random!_!random!.%i%"
)
popd
pause

统计文件夹下某格式文件的数量

@echo off
setlocal enabledelayedexpansion
set in=0
for /f "tokens=* delims=" %%i in ('dir /b D:\MyDownload\*.jpg') do (
    set /a out=!in!+1
    set in=!out!
)
echo !in!
pause

将某目录下按文件格式乱序后重新排序

  • 若担心 !random!_!random! 双随机数命名文件会出现同名文件造成文件被覆盖,可设置多个随机数命名,如:!random!_!random!_!random!
@echo off
setlocal EnableDelayedExpansion
echo 任务开始,请稍后……
set Start_TIME=%time:~0,2%:%time:~3,2%:%time:~6,2%
:: 统计 D:\MyDownload 目录下,txt 文件的数量
set li=0
for /f "tokens=* delims=" %%i in ('dir /b D:\MyDownload\*.txt') do (
    set /a tu=!li!+1
    set li=!tu!
)
:: 将统计 D:\MyDownload 目录下 txt 文件的文件名以随机数命名
for %%a in (D:\MyDownload\*.txt) do (
    ren "%%a" "!random!_!random!.txt"
)
:: 将乱序后的txt文件名重新排序
set in=0
for %%n in (D:\MyDownload\*.txt) do (
    set /a li=!li!-1
    if !li! gtr -1 (
        set /a out=!in!+1
        set in=!out!
        ren "%%n" "M - !in!.txt"
    ) else (goto :end)
)
:end
echo 开始时间:!Start_TIME!
set End_NAME=结束时间:
set End_TIME=%time:~0,2%:%time:~3,2%:%time:~6,2%
echo !End_NAME!!End_TIME!
pause

遍历某目录下的所有文件名,包括子文件夹内

  • 遍历某目录下的所有文件名,包括子文件夹内,并统计文件数量以及任务耗时
@echo off
setlocal EnableDelayedExpansion
set /p Folder=请输入需要统计查询的文件夹:
echo 任务开始,请稍后……
set Start_TIME=%time:~0,2%:%time:~3,2%:%time:~6,2%
set h1=%time:~0,2%
set m1=%time:~3,2%
set s1=%time:~6,2%
echo 开始时间:!Start_TIME!
if exist list.txt del list.txt /q
set sum=-1

for /f "delims=" %%i in ('dir /b /a-d /s "%Folder%"') do (
	set /a sum=!sum!+1
	:: %%~nxi只显示文件名,%%i显示带路径的文件信息
	echo %%i >> list.txt
)
set End_TIME=%time:~0,2%:%time:~3,2%:%time:~6,2%
set h2=%time:~0,2%
set m2=%time:~3,2%
set s2=%time:~6,2%
echo 结束时间:!End_TIME!
:: 计算秒数
if !s2! lss !s1! (
	set /a m2=!m2!-1
	set /a s2=!s2!+60
)
set /a s=!s2!-!s1!
:: 计算分钟数
if !m2! lss !m1! (
	set /a h2=!h2!-1
	set /a m2=!m2!+60
)
set /a m=!m2!-!m1!
:: 计算小时数
if !h2! lss !h1! (
	set /a h2=!h2!+24
)
set /a h=!h2!-!h1!
echo 总耗时为:!h!小时!m!分!s!秒,共找到!sum!个文件
echo 已将所有文件名存储到list.txt,任务结束后,将自动打开list.txt文件查看!
start list.txt
pause

批量删除指定大小的文件

注:危险脚本,双击执行则删除脚本所在目录及其子目录所有指定大小的文件

* 1KB(kilobyte)=1000byte、1MB(megabyte)=1000000byte
* 代码中的10000单位为byte

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
@echo off
setlocal EnableDelayedExpansion
echo 任务开始,请稍后……
for /f "delims=" %%i in ('dir /b /a-d /s "%~dp0"') do (
	if %%~zi LEQ 10000 (
		del /f /s /q "%%i"
	)
)
pause

删除我的电脑中的百度网盘同步空间

reg delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{18701C81-34AB-498E-8C7F-5D26B9C36732}" /f


标题:bat 文件执行cmd命令的几个应用(二)
作者:Mune
地址:https://cnxiaobai.com/articles/2021/10/16/1634372857314.html

    评论
    0 评论
avatar

取消