1、需求分析
标题是bat批处理实现从特定文件夹中提取文件内容并以父文件夹名存储。这里面我们要做的工作是:
①、批处理脚本使用的是bat文件;
②、文件夹下面有很多子文件夹,然后子文件夹下仍然有相同的文件结构,我们需要从三级目录中的某一特定的文件夹中拷贝所有文件;
③、每个拷贝的文件存放到新位置下,并使用原来二级文件夹的名称新建文件夹存放。
2、需求出发点
地形图生产时,每一图幅文件夹下都会有对应的信息文件夹,在处理前只需要把每一图幅的地形图数据文件拿到存放在一起即可。
如下图构建类似的目录结构:
这里可见,src文件夹中存放原始数据,包括四幅图,这四幅图里面有都包含元数据、分层数据、图表三个文件夹。本文的处理就是需要将分层数据文件夹中的文件拷贝到new文件夹中,并且在new文件夹中仍然需要按四幅图幅的名称分别管理存储。
3、批处理实现
3.1、首先新建文本文件,并改拓展名为bat,保存编辑
增加头尾
@echo off
setlocal enabledelayedexpansion
...
echo copy完成!
endlocal
3.2、设置编码,避免中文乱码
REM
chcp 65001
CLS
这里可以在cmd中输入chcp查看当前电脑中的编码值。
这里utf-8一般设置为65001,如果仍然乱码可以试试936或者437。如果中文乱码就是会导致后面的操作闪退。
3.3、根据要求设置处理路径和特定文件夹
echo "设置需要遍历的主文件夹路径"
set "MAIN_DIR=D:\Desktop\地形图\src"
echo "设置需要排除的文件夹名称"
set "EXCLUDE_FOLDER=分层数据"
为了保证,处理过程顺利最好,加上以下代码,因为不一定每次保证bat文件和要处理文件夹在同一位置。
d:
cd %MAIN_DIR%
3.4、遍历二级目录,然后复制文件到相应的文件夹下
echo "遍历主文件夹下的所有文件夹"
for /d %%i in ("%MAIN_DIR%\*") do (
echo 进入: %%irem 获取到文件路径
echo %%~dpi
rem 获取到文件盘符
echo %%~di
rem 获取到文件名称
echo %%~nixcopy %%i\%EXCLUDE_FOLDER% D:\Desktop\地形图\new\%%~ni /s/e/i/y
)
重点就是通过%%~ni获取当前文件夹的名称。