这是我在这里的第一篇帖子。我在这个领域还很菜鸟,所以如果我问了一些非常基础的问题,请见谅...
案子...
因此,我需要创建一个批处理文件,该文件要求输入项目编号和名称,并创建一个具有设定编号和名称的文件夹,以及其中的一组特定子文件夹。类似于这棵树(子文件夹的名称简化,元素数量减少)
number name
├───01.SF A
│ ├───01.SF A1
│ └───02.SF A2
├───02.SF B
│ ├───01.SF B1
│ ├───02.SF B2
│ └───03.SF B3
├───03.SF C
│ ├───01.SF C1
│ ├───02.SF C2
│ ├───03.SF C3
│ ├───04.SF C4
│ └───05.SF C5
├───04.SF D
└───05.SF E
├───01.SF E1
├───02.SF E2
├───03.SF E3
└───04.SF E4
基本上每次开始新项目时都会用到它。
代码...
因此,按照@Pimp Juice IT 的回答这个帖子我为批处理文件创建了以下代码:
@ECHO Off
SET /P "NUM=Project number "
SET /P "NOM=Project name "
SET "PNUM=%NUM% "
SET RootDir=%userprofile%\Desktop\%PNUM%%NOM%
SET SubA="01.SF A","02.SF B","03.SF C","04.SF D","05.SF E"
SET Sub1="01.SF A1","02.SF A2"
SET Sub2="01.SF B1","02.SF B2","03.SF B3"
SET Sub3="01.SF C1","02.SF C2","03.SF C3","04.SF C4","05.SF C5"
SET Sub5="01.SF E1","02.SF E2","03.SF E3","04.SF E4"
FOR %%A IN (%SubA%) DO IF NOT EXIST "%RootDir%\%%~A" MD "%RootDir%\%%~A"
FOR %%1 IN (%Sub1%) DO IF NOT EXIST "%RootDir%\01.SF A\%%~1" MD "%RootDir%\01.SF A\%%~1"
FOR %%2 IN (%Sub2%) DO IF NOT EXIST "%RootDir%\02.SF B\%%~2" MD "%RootDir%\02.SF B\%%~2"
FOR %%3 IN (%Sub3%) DO IF NOT EXIST "%RootDir%\03.SF C\%%~3" MD "%RootDir%\03.SF C\%%~3"
FOR %%5 IN (%Sub5%) DO IF NOT EXIST "%RootDir%\05.SF E\%%~5" MD "%RootDir%\05.SF E\%%~5"
EXIT
令我惊讶的是,它竟然如此有效!(感谢 Pimp Juice IT!)
实际RootDir
是为了测试目的,也是SET "PNUM=%NUM% "
我在数字和名称之间添加空格的方式:(
MD...
这个想法是当结构随着时间的推移而改变/增长时,不必为每个文件夹添加新的一行。
但在我看来,我缩放示例的方式产生了非常低效和静态的代码……特别是考虑到可扩展性。我问的是它是否可以改进/简化为更好和更参数化的代码。
疑问...
总的来说,我希望参数化并优化该过程,这样当文件夹更改名称或在现有文件夹之间出现新文件夹时,它会自动调整。
也许必须从头开始重新考虑代码!
#1
在未来的某个时间点,结构会被重新设计,并且二级文件夹会更改名称(从那时起)。
即:01.SF A
更改为01.OTHERNAME A
。它在 for
中被更改
SET SubA="01.SF A","02.SF B","03.SF C","04.SF D","05.SF E"
SET SubA="01.OTHERNAME A","02.SF B","03.SF C","04.SF D","05.SF E"
但随后需要
"%RootDir%\01.SF A\%%~1"
手动更改
"%RootDir%\01.OTHERNAME A\%%~1"
有没有办法将其参数化?例如引用设置值的第二个实例?比如%RootDir%\second value of SubA\%%~1"
#2
如果结构发生变化且不再需要文件夹,或者需要在示例结构中添加新文件夹(从那时起),则需要手动更新文件夹的编号。
即:02.SF C2
将不再在结构中,然后
03.SF C3
04.SF C4
和05.SF C5
必须更改为
02.SF C3
03.SF C4
和04.SF C5
目前需要手动完成
有没有办法自动增加文件夹名称中的编号?这样当出现新文件夹时,编号就会自动调整
#3
除了用此声明新变量外,还可以在文件名中添加空格吗?SET "PNUM=%NUM% "
#4
整个过程可以像示例中的 Pimp Juice IT 那样嵌套进行吗FOR
?(我试图思考如何做,但我的大脑有点蓝屏)
#5
最后,这对于批处理文件来说正确吗?或者它更适合 powershell 脚本?
非常感谢您付出的时间和耐心!