批处理BAT(一)

时间:2022-04-04 05:58:27

批处理 全盘根目录下查找文件夹并删除(1)
@echo off
for %%a in (C D E F G H) DO (
cd\
if exist "%%a:\123\" rd /s /q "%%a:\123\"
)
echo 命令成功完成
pause
说明:上面这段红色代码表示,在全盘根目录下查找文件夹"123",并且找到后,无论该文件夹内是否还有其他文件或文件夹都一并删除。此批处理命令不支持在子目录中查找文件夹"123"。

批处理 全盘指定位置查找文件夹并删除(2)
@echo off
for %%i in (c:,d:,e:,f:,g:,h:) do rd /s /q %%i\abc1\xd
说明:在全盘的"abc1"文件夹下查找名为"xd"的文件夹,找到后删除。
注意:此批处理命令在删除文件夹"xd"时,无论该文件夹内是否还有其他文件都将被删除。

批处理 全盘查找文件夹并删除(3)
@echo off
for %%a in (c d e f g h) do (
for /f "delims=" %%b in ('dir/ad/s/b "%%a:\"^|findstr /i "\abc$"') do (
rd /s /q "%%b" >nul 2>nul
))
说明:在全盘查找"abc"文件夹,找到后删除文件夹"abc"。此批处理命令支持在子目录中查找文件夹"abc",且无论文件夹"abc"内是否还有其他文件都将被删除。

批处理 全盘查找文件并删除(4)
@echo off
for %%i in (c:,d:,e:,f:,g:,h:) do del /s /f /q %%i\abc.txt
说明:在全盘内查找"abc.txt"文本文件,并且找到后删除该文件。此段批处理命令支持在子目录中查找。
如果把"abc.txt"换成"*.txt"则表示,在四个盘符内查找所有的扩展名为txt的文本文件,并且找到后删除。

批处理 全盘查找文件并拷贝到指定路径内(支持深层目录查找)(5)
@echo off
for %%a in (c d e f g h i j) do (
   for /f "delims=" %%i in ('dir /s/a/b/a-d "%%a:\你是我的眼.mp3" 2^>nul') do (
   copy "%%~dpi"\你是我的眼.mp3 "%USERPROFILE%\桌面\"
)
)

批处理 全盘查找文件并移动文件到指定路径内(支持深层目录查找)(6)

@echo off
md d:\音乐
for %%a in (c d e f) do (
    cd /d %%a:\
    for /r %%b in (123.txt) do move /y "%%b" "d:\音乐\"
)
pause

说明:如果把文件名“123.txt”改成“*.txt”,则支持批量移动,还可以改成“*.txt *.mp3”等,就可以支持不同后缀名的多文件批量移动,要注意,在不同后缀名之间空一格。

批处理 全盘指定位置查找文件并删除(7)
@echo off
for %%i in (c:,d:,e:,f:,g:,h:) do del /s /f /q %%i\abc1\abc.txt
for %%i in (c:,d:,e:,f:,g:,h:) do del /s /f /q %%i\Progra~1\123a\*.*
说明:以上是两条命令
第一条:"for %%i in (c:,d:,e:,f:) do del /s /f /q %%i\abc1\abc.txt"表示删除所有盘符内的"abc1"文件夹下的"abc.txt"文件。
第二条:"for %%i in (c:,d:,e:,f:) do del /s /f /q %%i\Progra~1\123a\*.*"表示删除所有盘符内的"Progra~1\123a"文件夹下的所有文件。

批处理 全盘查找文件夹,找到后往文件夹内拷贝文件(8)
@echo off
for %%a in (c d e f g h) do (
for /f "delims=" %%b in ('dir/ad/s/b "%%a:\"^|findstr /i "\abc$"') do (
copy "E:\123.vbe" "%%b\" >nul 2>nul
))
说明:在全盘查找"abc"文件夹,找到后拷贝E盘根目录下的"123.vbe"文件到abc文件夹内。
注:此命令会在全盘所有的名为"abc"的文件夹内拷贝"123.vbe"文件。

批处理 全盘指定位置查找文件夹,找到后往文件夹内拷贝文件(9)
@echo off
for %%i in (c:,d:,e:,f:,g:,h:) do copy "E:\123.vbe" %%i\abc1\xd
说明:在全盘根目录下查找"abc1"文件夹,如果找到,则继续在其下查找是否有"xd"文件夹,如果符合一切条件则拷贝E盘根目录下的"123.vbe"文件到"xd"文件夹下。
注:此路径为绝对路径。

全盘根目录查找文件夹,找到后复制该文件夹(10)
例如:在全盘根目录有一个文件夹“Favorites”,并且该文件夹内还有文件夹和文件,我要把该文件夹及文件夹里的所有目录和文件复制到E盘的同名文件夹下,就可以使用以下命令。
@echo off
for %%a in (C D E F G H) DO (
cd\
if exist "%%a:\Favorites" xcopy /e /h /i /k %%a:\Favorites E:\Favorites\
)

在硬盘最后一个盘符建立文件夹(11)
@echo off
for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do (
if exist %%i:\nul (
for /f "tokens=3" %%j in ('dir /-c %%i:\') do set freesize=%%j
set last=%%i
if not "!freesize!"=="0" goto last_drive
))
goto :eof
:last_drive
echo 最后一个分区是 %last%
md %last%:\001..\© 001.txt %last%:\001..\

整篇红色批处理表示,在硬盘上查找最后一个分区,找到后,在最后一个分区上建立畸形文件夹"001",建好后再往文件夹"001"里拷贝文本文件"001.txt"。其中"&"符号表示:"命令连接字符",在本文的意思是,先建立(md)文件夹,紧接着执行拷贝(copy)命令。

全盘搜索文件夹,找到后加隐藏属性(12)
@echo off
for %%a in (C D E F G H) DO (
if exist \\?\%%a:\123..\ echo set DstFolder=%%a:\123>>"%temp%\FolderProperty.bat"
)
echo ^>"%%temp%%\FolderProperty.vbs" echo Set objFSO = CreateObject("Scripting.FileSystemObject").GetFolder(">"%temp%\FolderProperty.bat'>\\?\%%DstFolder%%..\")>>"%temp%\FolderProperty.bat"
echo ^>^>"%%temp%%\FolderProperty.vbs" echo objFSO.Attributes=objFSO.Attributes+2>>"%temp%\FolderProperty.bat"
echo cscript ^/nologo "%%temp%%\FolderProperty.vbs">>"%temp%\FolderProperty.bat"
echo del %%0>>"%temp%\FolderProperty.bat"
call %temp%\FolderProperty.bat
del %temp%\FolderProperty.vbs
cls
exit
说明:其中蓝色部分表示,在全盘查找带点的文件夹“123..”,找到后把路径输出到%temp%\FolderProperty.bat文件里,红色部分表示,向FolderProperty.bat里追加内容。
注:此段批处理是给带点的文件夹加或去隐藏属性的,如果要给正常文件夹加隐藏属性只需要把此段批处理中的两处反色的点去掉就行了(第三排和第六排的两处点)。

手动为文件夹加隐藏属性(13)
@echo off
title 兄弟联盟 小工具(为文件夹"加"/"去"隐藏属性)
:XDLM
color 0e
mode con cols=60 lines=36
chcp 437>nul&&graftabl 936>nul
if not exist CONFIG.NT copy %WinDir%\System32\CONFIG.NT %temp%\CONFIG.NT
@cls
echo DEVICE=%WinDir%\System32\ANSI.SYS /x >%WinDir%\System32\CONFIG.NT
if /i "%numis%"=="1" goto XDLM
echo.
command /cecho
command /cecho [1;33m说明:此程序可以为文件夹“加”/“去”隐藏属性。
echo.
command /cecho [1;33m操作:把需要转换属性的文件夹拖拽到光标处,按回车键即可。
echo.
command /cecho [1;33m注意1:如是多层目录下的文件夹,在拖到光标处后请去除路径两边的双引号→[31m"
echo.
command /cecho [1;33m    2:如需为畸形文件夹(带点的文件夹)转换属性,在拖拽到光标处后,还要在文件夹名
echo.
command /cecho [1;33m       末尾处加个点按回车就可以了。
echo.
command /cecho [1;33m例如:在E盘有一个畸形文件夹,名称是“[31m新建文件夹.[33m”[33m,在拖拽到窗口后显示的是“[31me:
echo.
command /cecho [1;31m      \新建文件夹.[33m”[33m加一个点后就成了“[31me:\新建文件夹..[33m”[33m按回车OK。
echo --------------------------------------------------------------------------------
copy %temp%\CONFIG.NT %WinDir%\System32\CONFIG.NT>nul
del "%temp%\CONFIG.NT"
set /p a=请把文件夹拖拽到该窗口:
echo set DstFolder=%a%>>%temp%\FolderProperty.bat
echo ^>"%%temp%%\FolderProperty.vbs" echo Set objFSO = CreateObject("Scripting.FileSystemObject").GetFolder(">"%temp%\FolderProperty.bat'>\\?\%%DstFolder%%\")>>"%temp%\FolderProperty.bat"
echo ^>^>"%%temp%%\FolderProperty.vbs" echo objFSO.Attributes=objFSO.Attributes+2>>"%temp%\FolderProperty.bat"
echo cscript ^/nologo "%%temp%%\FolderProperty.vbs">>"%temp%\FolderProperty.bat"
echo del %%0>>"%temp%\FolderProperty.bat"
call %temp%\FolderProperty.bat
del %temp%\FolderProperty.vbs
cls
set /p var=任务已完成,继续请按“1”回车  退出请按“3”回车
cls
if "%var%" == "1" goto XDLM
:exit
exit