批处理脚本 - 创建文件夹问题

时间:2016-02-09 06:50:36

标签: batch-file directory

我正在尝试创建一个批处理脚本,该脚本根据文本文件中的行创建文件夹。我希望能够自动执行“D”功能,因此无需输入。

  

@echo off    

设置/ P D =“输入名称,例如ABCD:”

     

for / F“delims =”%% a in(list.txt)DO(     

FOR %% x IN(   

“C:\测试\%d%\ %%一个”   

“C:\测试\%d%\ %%一个\ Folder1中”   

“C:\测试\%d%\ %%一个\ FOLDER2”    

)DO(      

MD“%% ~x”       

)   

我的列表文件如下所示

  

JACK-12345   

JOHN-12345

我想读取每行的前4个字符,并在已存在的相关文件夹中创建目录。

因此JACK-12345将在C:\ test \ JACK \ JACK-12345中创建一个文件夹,JOHN将创建一个文件夹C:\ test \ JOHN \ JOHN-12345

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "targetdir=U:\destdir"

for /F "delims=" %%a in (q35285628.txt) DO (
 SET "ch4=%%a"
 SET "ch4=!ch4:~0,4!"
 FOR %%x IN (
  "%targetdir%\!ch4!\%%a"
  "%targetdir%\!ch4!\%%a\Folder1"
  "%targetdir%\!ch4!\%%a\Folder2"
 ) DO (
  ECHO(MD "%%~x"
 )
)

GOTO :EOF

您需要更改targetdir的设置以适合您的具体情况。

我使用了一个名为q35285628.txt的文件,其中包含我的测试数据。

所需的MD命令仅用于ECHO用于测试目的。 在您确认命令正确无法后,将ECHO(MD更改为MD以实际创建目录。附加2>nul以禁止错误消息(例如,当目录已存在时)

调用delayedexpansion以允许元变量%%a的子字符串将整个字符串设为读取到ch4,然后选择前4个字符。

块中需要

!var!才能在运行时访问变量的变化值。

对于扩展的问题(未指定:“数学”等适合树 - 附加,替换,无论什么?

使用例程的“肉”:

 SET "ch4=%%a"
 SET "ch4=!ch4:~0,4!"
 SET "folder1=Folder1"
 if /i "!ch4:~0,1!"=="m" SET "folder1=Maths"
 if /i "!ch4:~0,1!"=="s" SET "folder1=Science"
 FOR %%x IN (
  "%targetdir%\!ch4!\%%a"
  "%targetdir%\!ch4!\%%a\!folder1!"
  "%targetdir%\!ch4!\%%a\Folder2"
 ) DO (
  ECHO(MD "%%~x"
 )
)
如果从文件读取的行的第一个字符是“m”(在任何一种情况下),

将用“Maths”替换原始方案中的“folder1”,如果是“s”和“Folder1”则将“Science”替换为“Science”否则。