如何创建批处理文件以从2个不同的变量列表创建多层文件夹?

时间:2013-12-21 02:16:19

标签: windows batch-file mkdir

我对此有零经验。任何和所有的帮助将不胜感激。

现在我拥有它所以我可以看到我正在创建的文件夹列表并编辑我想要创建的文件夹。我希望能够创建Fund Family文件夹,并且在每个Fund Family文件夹中都有各种实体,然后在每个实体内创建文件夹。我认为这需要引用许多不同的输出列表。所以就像在顶部基金​​家庭名单一样......我认为我需要每个家庭的serval outpistlits将包含实体所以entitylist01 ... entitylist02 ...如果这是有道理的

共有32个基金家族,共有约600个实体。每个基金家庭的实体清单都会发生变化。

这就是我到目前为止......

mkdir C:\2013\"2 - November Projections"
pause
dir Z:\2013\"2 - November Projections"\"*" /b /a:d >fundfamily.txt
start C:\Windows\System32\notepad.exe "fundfamily.txt"
pause
for /f "tokens=*" %%a in (fundfamily.txt) do mkdir C:\2013\"2 - November Projections"\"%%~a"
pause
for /f "tokens=*" %%a in (fundfamily.txt) do dir Z:\2013\"2 - November Projections"\"%%~a"\"*" /b /a:d >entitylist.txt
start C:\Windows\System32\notepad.exe "entitylist.txt"
pause
for /f "tokens=*" %%a in (entitylist.txt) do mkdir C:\2013\"2 - November Projections"\"*"\"%%~a"\2013\"November Estimates"
pause

1 个答案:

答案 0 :(得分:1)

@echo off
setlocal
SET "sourcedrive=Z"
SET "destdrive=C"
SET /a year=2013
SET "projections=2 - November Projections"
SET "Estimates=November Estimates"
DIR /b /ad "%sourcedrive%:\%year%\%projections%" >fundfamily.txt
start /wait "Fund Family" C:\Windows\System32\notepad.exe "fundfamily.txt"
FOR /f "delims=" %%a IN (fundfamily.txt) DO (
 ECHO MD "%destdrive%:\%year%\%projections%\%%~a"
 DIR /b /ad "%sourcedrive%:\%year%\%projections%\%%~a" >entitylist.txt
 start /wait "%%~a entities" C:\Windows\System32\notepad.exe "entitylist.txt"
 FOR /f "delims=" %%b IN (entitylist.txt) DO ECHO MD "%destdrive%:\%year%\%projections%\%%~a\%%~b\%year%\%estimates%"
)

解决一个问题非常困难""我的代码没有做我想做的事情"没有样本数据或预期结果的指示。

例如,您可以提供部分列表,例如

fundfamily.txt

Jones
Brown
de la Vedova
Smith

entitylist.txt

Stock - Confusion Industries
Sweatshop Industrial Inc.
Royalties - Useless Invention
123, Slum St., Gloomsville

the entity list changes for each fundfamily之类的注释 - 或者说相同的,或者其他什么。您可以Edit将此数据添加到您的问题中 - 这是标记下的Edit链接所用的内容。

至于上述代码 - 我假设结构如我所指出的那样。我建议如果你有数百个fundfamily条目,这将是一个繁重的任务,但我们没有其他数据继续...所以它"空气"代码 - 由于缺少可用数据而未尝试。

请注意,start/wait行中的第一个引用字符串将成为窗口标题。如果您不想要窗口标题,请使用空字符串""

我已经离开了C:\Windows\System32\notepad.exe,但很可能简单notepad就足够了,甚至可以完全省略它。 /wait是神奇的 - 在批处理进入下一步之前,等待可执行文件完成。

另请注意,MD命令(MDmkdir是同义词)仅仅是echo - 因此您可以在不实际更改任何内容的情况下进行测试。您需要在echo之前删除md关键字才能实际创建目录。