我正在尝试创建一个批处理脚本,该脚本根据文本文件中的行创建文件夹。我希望能够自动执行“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
非常感谢任何帮助!
答案 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”否则。