使用 bat 批量创建带有项目前缀名的文件夹结构

在项目管理中,经常需要为每个新项目创建一套标准化的文件夹结构。如文档中所述,用户希望为每个项目(如"Project 1"、“Project 2”)创建以下结构的文件夹:

project-1_export\project-1_DWG  
project-1_export\project-1_IMAGES 
project-1_export\project-1_PDF 
project-1_export\project-1_ZIP 
project-1_LIBRARY 
project-1_SUPPORT DOCUMENTS\project-1_Scans 
project-1_SUPPORT DOCUMENTS\project-1_PDF\project-1_Client 
project-1_SUPPORT DOCUMENTS\project-1_PDF\project-1_Others 

解决方案分析

方法一:简单批处理脚本

@echo off
if "%~1" == "" goto :help
md "project-%~1_export\project-%~1_DWG"  
md "project-%~1_export\project-%~1_IMAGES" 
md "project-%~1_export\project-%~1_PDF" 
md "project-%~1_export\project-%~1_ZIP" 
md "project-%~1_LIBRARY" 
md "project-%~1_SUPPORT DOCUMENTS\project-%~1_Scans" 
md "project-%~1_SUPPORT DOCUMENTS\project-%~1_PDF\project-%~1_Client" 
md "project-%~1_SUPPORT DOCUMENTS\project-%~1_PDF\project-%~1_Others" 
goto :eof
:help
echo 使用方法:输入项目编号创建文件夹结构,例如:
echo %~n0 1

中文注释说明:

  • @echo off - 关闭命令回显,使输出更简洁
  • if "%~1" == "" goto :help - 如果没有传入参数,跳转到帮助部分
  • md - 创建目录命令
  • %~1 - 第一个传入的参数(项目编号)
  • :help - 帮助标签
  • %~n0 - 当前批处理文件名

使用方法:

  1. 将脚本保存为CreateProject.bat
  2. 在命令行中执行:CreateProject 1234(1234为项目编号)

方法二:高级批处理脚本

@ECHO OFF
@setlocal EnableDelayedExpansionRem | 配置部分
Set "MainDir=C:\Projects"  Rem | 设置主目录路径
Set "MustContain=project"  Rem | 设置必须包含的关键字Rem | 获取每个项目文件夹
for /f "tokens=*" %%A in ('dir "!MainDir!\" /b /a:d') do (Set "MainFolder=%%~nA"Rem | 检查当前文件夹是否包含项目关键字for /f "tokens=*" %%B in ('echo !MainFolder!^| find /I "!MustContain!"') do (Set "BaseFolderName=%%~nB"Rem | 获取项目目录下的每个文件夹for /f "tokens=*" %%C in ('dir "!MainDir!\!BaseFolderName!\*" /b /s /a:d') do (Set "FolderName=%%C"Rem | 检查当前文件夹是否已有项目前缀for /f "tokens=*" %%D in ('echo !FolderName!^| find /V "!BaseFolderName!_"') do (Echo %%D >> DataFile.temp  Rem | 将结果保存到临时文件)))
)Rem | 检查临时文件是否存在
If exist "%~dp0DataFile.temp" (Rem | 反转文件夹树结构for /F "tokens=*" %%A in (DataFile.temp) do (set /A I=!I! + 1set LINE!I!=%%A)Del %~dp0DataFile.tempfor /L %%A in (!I!,-1,1) do (echo !LINE%%A! >> DataFile.temp)Rem | 读取临时文件并处理路径for /F "tokens=*" %%A in (DataFile.temp) do (Set "FolderName=%%~nA"Set "String=%%A"Set "String=!String:%MainDir%\=!"Rem | 获取项目编号for /F "tokens=1,2* delims=\" %%B in ('Echo !String!') do (Set "BaseFolderName=%%B")Rem | 重命名文件夹CD "%%A\.."rename "!FolderName!" "!BaseFolderName!_!FolderName!")Del %~dp0DataFile.temp
)
goto :EOF

文件夹结构关系图

Project-1
project-1_export
project-1_LIBRARY
project-1_SUPPORT DOCUMENTS
project-1_DWG
project-1_IMAGES
project-1_PDF
project-1_ZIP
project-1_Scans
project-1_PDF
project-1_Client
project-1_Others

实现原理对比

特性简单脚本高级脚本
创建新结构✔️
重命名现有结构✔️
参数化输入命令行参数配置文件
处理子文件夹手动指定自动递归
灵活性
复杂度简单复杂

实际应用建议

  1. 新建项目结构:使用简单脚本方法,每次为新项目执行一次
  2. 批量重命名现有结构:使用高级脚本方法,自动化处理已有文件夹
  3. 扩展功能
    • 添加日志记录功能
    • 增加错误处理机制
    • 支持从配置文件读取结构定义

单词、短语表

单词(短语)音标词性词根/词缀释义搭配例子
batch file/bætʃ faɪl/n.batch(批量)+file(文件)批处理文件create batch fileI created a batch file to automate the process.
prefix/ˈpriːfɪks/n.pre-(前)+fix(固定)前缀variable prefixThe folders have a project name prefix.
subfolder/ˈsʌbˌfoʊldər/n.sub-(下)+folder(文件夹)子文件夹create subfolderHow to create subfolders automatically?
token/ˈtoʊkən/n.-标记tokens=*Use “tokens=*” to get the whole line.
delayed expansion/dɪˈleɪd ɪkˈspænʃən/n.delay(延迟)+expand(扩展)延迟扩展enable delayed expansionUse delayed expansion to handle variables in loops.
recursive/rɪˈkɜːrsɪv/adj.re-(再)+curs(跑)递归的recursive folder scanThe script performs a recursive scan of all subfolders.
parameter/pəˈræmɪtər/n.para-(旁)+meter(测量)参数command line parameterPass the project ID as a command line parameter.

通过本文的详细解析和代码示例,读者可以全面了解如何使用批处理脚本创建具有项目前缀的文件夹结构。无论是简单的创建需求还是复杂的批量重命名场景,都能找到合适的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91409.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python类中魔术方法(Magic Methods)完全指南:从入门到精通

文章目录Python类中魔术方法(Magic Methods)完全指南:从入门到精通一、魔术方法基础1. 什么是魔术方法?2. 魔术方法的特点二、常用魔术方法分类详解1. 对象创建与初始化2. 对象表示与字符串转换3. 比较运算符重载4. 算术运算符重载5. 容器类型模拟6. 上下…

H3CNE综合实验之五角星

H3CNE综合实验之五角星 实验拓扑图交换机地址规划表:SW6G1/0/1Vlan100:10.1.3.2/24G1/0/2Vlan90:10.1.4.2/24G1/0/3Vlan50:10.1.5.1/24G1/0/4Vlan60:10.1.6.1/24SW7G1/0/1Vlan50:10.1.5.2/24G1/0/2Vlan30:192.168.3.1/24G1/0/6Vlan70:10.1.1.2/24G1/0/3-…

Android EventBus使用方法与底层原理详解

EventBus 是什么? EventBus 是一个基于发布/订阅(Publish/Subscribe) 模式的开源库(主要由 greenrobot 开发维护)。它的核心目的是简化 Android 应用中不同组件(如 Activity, Fragment, Service, Thread 等…

初等数论简明教程

初等数论简明教程 本文给出初等数论中的一些重要的定理与例题,证明风格采用 整除线法 与 命题节点法。 整除线法 指推理的第 nnn 步左边的字符可由前面左边的字符得到,右边的字符可由前面右边的字符得到,整除线变成了推理线,既少…

Spring之核心容器(IoC,DI,基本操作)详解

Spring之核心容器IoC/DI/基本操作详解一、核心概念:IoC与DI的本质1.1 IoC(Inversion of Control,控制反转)传统开发模式(无IoC)IoC模式(Spring容器管理)1.2 DI(Dependenc…

【论文阅读】基于注意力机制的冥想脑电分类识别研究(2025)

基于注意力机制的冥想脑电分类识别研究💡 Meta DataTitle基于注意力机制的冥想脑电分类识别研究Authors周梓涵Pub. date2025📜 Research Background & Objective背景: 现代生活压力导致心理问题日益突出,冥想作为一种有效的心…

GitHub 上 Star 数量前 8 的开源 Web 应用项目

原文链接:https://www.nocobase.com/cn/blog/github-open-source-web-applications。 近期,我们发布了多篇「Top GitHub Star 开源项目推荐」系列文章,受到了大量点赞与收藏,很多开发者留言表示希望能看到更多不同领域的开源工具推…

FATFS文件系统原理及其移植详解

一、FATFS简介 FATFS 是一个完全免费开源的 FAT/exFAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准 C 语言(ANSI C C89)编写,所以具有良好的硬件平台独立性,只需做简单的修改就可以移植到 8051、PIC、A…

KubeRay 和 Ray

KubeRay 和 Ray 不是替代关系,而是互补的协作关系。两者在分布式计算生态中扮演不同角色,共同构成完整的云原生 AI 解决方案。以下是具体分析:🔧 1. 核心定位差异Ray 是分布式计算引擎,提供底层 API(如 ray…

破解轮胎仓储高密度与柔性管理难题

轮胎作为特殊的大件异形工业品,其仓储管理长期面临多重挑战:规格型号繁杂导致SKU数量庞大,重型载重对货架承重提出极高要求,橡胶材质对防压变形、避光防老化等存储环境存在严苛标准。传统平置堆垛或普通货架方案不仅空间利用率不足…

EVA series系列(上)

目录 一、EVA 1、概述 2、方法 二、EVA-02 1、概述 2、架构 三、EVA-CLIP 1、概述 2、方法 四、EMU 1、概述 2、架构 3、训练细节 4、评估 一、EVA 1、概述 为探寻大规模表征学习任务的MIM预训练任务在ViT基础上扩展到1B参数量规模,结合10M级别&am…

ABP VNext + EF Core 二级缓存:提升查询性能

ABP VNext EF Core 二级缓存:提升查询性能 🚀 📚 目录ABP VNext EF Core 二级缓存:提升查询性能 🚀引言 🚀一、环境与依赖 🛠️二、集成步骤 ⚙️2.1 安装 NuGet 包2.2 注册缓存服务与拦截器2…

3.1k star!推荐一款开源基于AI实现的浏览器自动化插件工具 !

大家好!今天,我要给大家介绍一款超实用的开源工具——Chrome MCP Server!这款工具不仅能大幅提升我们的工作效率,还能让AI助手(如Claude)直接操控浏览器,实现自动化操作、内容分析等强大功能。 …

关于 OpenAI 的反思

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Python爬虫库性能与选型对比

Python常用爬虫库的优势对比。这是一个非常实用的问题,很多Python开发者都会面临选择合适爬虫工具的困惑。我根据网络很多搜索结果,整理出这些信息,为用户提供一个全面且清晰的对比分析。以下是Python中常用爬虫库的核心优势对比及选型建议&a…

NAT作业

拓扑图 实验要求 1.按照图示配置IP地址,公网地址100.1.1.1/24..较网“说过?,使“掩入到互联网,私服究的不到公的,使阳接入无三。.私网A通过NAPT,使R1接入到互联网,私网B通过EASY,IP,使R3接入到互联网实验思…

JAVA进阶--JVM

一.JVM的概述java语言有跨平台特点, 写一次java程序,可以在不同的平台上运行.(JVM虚拟机的作用)前提条件: 在不同的平台上安装不同的虚拟机(虚拟机就是一个翻译).java--->.class--->不同的虚拟机--->机器码1.jvm作用:负责将字节码翻译为机器码, 管理运行时内存2.jvm的…

基于Alpine构建MySQL镜像

文章目录基于Alpine构建MySQL镜像一、基础镜像选择与初始化1. 基础镜像选型2. 系统初始化二、核心配置构建1. 目录与权限配置2. 配置文件优化三、安全增强配置1. 密码策略强化2. 非root运行四、数据持久化与启动配置1. 数据卷声明2. 入口脚本优化五、完整Dockerfile示例六、关键…

Alamofire 网络请求全流解析,通俗易懂

Alamofire 网络请求全流程解析:从发起请求到处理响应 一、请求发起阶段:准备你的"快递" 1. 你告诉Alamofire要发什么"快递" // 就像告诉快递员:"我要寄一个包裹给https://api.example.com" AF.request("h…

链路聚合技术

链路聚合技术 链路聚合概述及应用场景 概述 链路聚合是把多条物理链路聚合在一起,形成一条逻辑链路。应用在交换机、路由器、服务器间链路,注意了,主机上面不能用链路聚合技术分为三层链路聚合和二层链路聚合链路聚合的作用 增加链路带宽提供…