Batch 对指定目录下的文件进行批量循环操作
Batch 文件用于批量处理某一指定目录下的指定类型的文件,此时需要使用循环 for
来执行。
一、如复制指定目录下的所有 dll
文件到另一个地方
@echo off
REM 1、定义变量
set "source_dir=D:\DevKits\Source"
set "dest_dir=D:\Tmp\Dll01"
REM 2、如果目标目录不存在,则创建它
if not exist "%dest_dir%" (
mkdir "%dest_dir%"
)
REM 3、复制源目录下的所有 .dll 文件到目标目录
for %%i in ("%source_dir%\*.dll") do (
copy "%%i" "%dest_dir%"
)
echo 文件已成功复制到 %dest_dir%
pause
1、定义变量来指定从哪里将dll复制到什么地方,将变量放在双引号里面,可以避免特殊字符导致解析的问题。
2、检测目标路径是否存在,不存在则创建
3、遍历源目录,将指定的dll复制到目标路径目录下:
%%i
:表示for循环中的变量,其中%%
后接的字符为占位符,可以用其它字符代替"%source_dir%\*.dll"
:表示源目录下的dll通配符,如果需要复制其它的文件,可以进行替换操作
二、如删除指定目录下的所有指定类型文件
@echo off
setlocal
:: 指定要清理的目录
set "target_dir=C:\Tmp\Dir"
:: 切换到目标目录
cd /d "%target_dir%"
:: 删除所有以 d.dll 结尾的文件
for %%i in (*d.dll) do (
echo Deleting debug DLL: %%i
del "%%i"
)
:: 结束
echo All debug DLLs have been deleted.
endlocal
1、setlocal
与 endlocal
:用于确保设定的环境变量只是在这之间起作用,而不会影响到批处理文件外的全局环境变量,保证影响最小化。
2、cd /d "%target_dir%"
:用于将执行环境切换到当前目录下,后续操作可以使用相对路径来进行,如循环 for
中的操作 *d.dll
即使用了相对路径的方式