创建数千个不同名称的文件夹
creating thousands of folders with different names
我必须创建几千个目录。
目录如下所示:10P001 是 YEAR/P,S,L,R,F/Numberfrom001to600
字母不系统,每个文件夹都要写。
我的脚本到目前为止看起来像这样,但是 cmd 不喜欢 for 循环。
@echo off
setlocal enabledelayedexpansion
set /p jahr=Welches Jahr?
set /p anzahl=Wieviele Projekte?
set looop=%anzahl+1000
for /l %%x in (1001, 1, looop) do (
set nummer=%%x
set /p welches=P1 S2 L3 R4 F5 nichtexistent6?
if %welches%==1 mkdir %jahr%P!nummer:~-3!
if %welches%==2 mkdir %jahr%S!nummer:~-3!
if %welches%==3 mkdir %jahr%L!nummer:~-3!
if %welches%==4 mkdir %jahr%R!nummer:~-3!
if %welches%==5 mkdir %jahr%F!nummer:~-3!
if %welches%==6 echo "nicht existent"
)
pause
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f "tokens=1,2delims= " %%a IN (q28608207.txt) DO (
FOR /l %%x IN (1001,1,1011) DO (
SET seq=%%x
ECHO(MD %%a%%b!seq:~-3!
)
)
GOTO :EOF
我使用了一个名为 q28608207.txt
的文件,其中包含我的测试数据。
10 P
10 S
例程从文件中读取两个字段 %%a
和 %%b
,然后循环将 %%x
从 1001 乘以 1 到 1011(当然可以是 1600 - 1011 正好证明了这一点),将 %%x
复制到一个临时变量(因为子字符串不能应用于元变量 %%x
)创建一个名为 %%a%%b 的目录和最后 3 个字符临时变量的。
请注意,setlocal enabledelayedexpansion
命令允许使用 !var!
(访问 var
的值)
所需的 MD 命令仅 ECHO
ed 用于测试目的。 确认命令正确后,将ECHO(MD
更改为MD
以实际创建目录。附加 2>nul
以抑制错误消息(例如,当目录已经存在时)
要创建包含所需号码的文件:
@echo off
setlocal enabledelayedexpansion
set /p jahr=Welches Jahr?
set /p anzahl=Wieviele Projekte?
set looop=%anzahl+1000
(
for /l %%x in (1001, 1, looop) do (
set nummer=%%x
echo %jahr%P!nummer:~-3!
)
)>J%jahr%.txt
这将在 J14.txt
中生成一个列表(例如 jahr=14)
14P001
14P002
14P003
然后您需要做的就是编辑文件(使用记事本,而不是文字处理器)以将 "P" 替换为所需的任何字母。删除不需要目录的任何行。
然后可以使用
将生成的文件处理到目录中
@ECHO OFF
SETLOCAL
FOR /f %%a IN (J14.txt) DO (
ECHO(MD "%%a"
)
GOTO :EOF
我现在的解决方案(我知道这比坏习惯更糟糕,但它有效并且会为我节省很多时间(或者至少为我的公司节省一些钱)):
@echo off
setlocal enabledelayedexpansion
set /p jahr=Welches Jahr?
set /p anzahl=Wieviele Projekte?
set /a looop=%anzahl%+1000
set /a count=1001
:LoopStart
set /p welches=P1 S2 L3 R4 F5 nichtexistent6?
if !welches!==1 mkdir %jahr%P!count:~-3!
if !welches!==2 mkdir %jahr%S!count:~-3!
if !welches!==3 mkdir %jahr%L!count:~-3!
if !welches!==4 mkdir %jahr%R!count:~-3!
if !welches!==5 mkdir %jahr%F!count:~-3!
if !welches!==6 echo "nicht existent"
set /a count=%count%+1
if %count% leq %looop% (goto LoopStart) else (goto:eof)
pause
我必须创建几千个目录。 目录如下所示:10P001 是 YEAR/P,S,L,R,F/Numberfrom001to600
字母不系统,每个文件夹都要写。
我的脚本到目前为止看起来像这样,但是 cmd 不喜欢 for 循环。
@echo off
setlocal enabledelayedexpansion
set /p jahr=Welches Jahr?
set /p anzahl=Wieviele Projekte?
set looop=%anzahl+1000
for /l %%x in (1001, 1, looop) do (
set nummer=%%x
set /p welches=P1 S2 L3 R4 F5 nichtexistent6?
if %welches%==1 mkdir %jahr%P!nummer:~-3!
if %welches%==2 mkdir %jahr%S!nummer:~-3!
if %welches%==3 mkdir %jahr%L!nummer:~-3!
if %welches%==4 mkdir %jahr%R!nummer:~-3!
if %welches%==5 mkdir %jahr%F!nummer:~-3!
if %welches%==6 echo "nicht existent"
)
pause
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f "tokens=1,2delims= " %%a IN (q28608207.txt) DO (
FOR /l %%x IN (1001,1,1011) DO (
SET seq=%%x
ECHO(MD %%a%%b!seq:~-3!
)
)
GOTO :EOF
我使用了一个名为 q28608207.txt
的文件,其中包含我的测试数据。
10 P
10 S
例程从文件中读取两个字段 %%a
和 %%b
,然后循环将 %%x
从 1001 乘以 1 到 1011(当然可以是 1600 - 1011 正好证明了这一点),将 %%x
复制到一个临时变量(因为子字符串不能应用于元变量 %%x
)创建一个名为 %%a%%b 的目录和最后 3 个字符临时变量的。
请注意,setlocal enabledelayedexpansion
命令允许使用 !var!
(访问 var
的值)
所需的 MD 命令仅 ECHO
ed 用于测试目的。 确认命令正确后,将ECHO(MD
更改为MD
以实际创建目录。附加 2>nul
以抑制错误消息(例如,当目录已经存在时)
要创建包含所需号码的文件:
@echo off
setlocal enabledelayedexpansion
set /p jahr=Welches Jahr?
set /p anzahl=Wieviele Projekte?
set looop=%anzahl+1000
(
for /l %%x in (1001, 1, looop) do (
set nummer=%%x
echo %jahr%P!nummer:~-3!
)
)>J%jahr%.txt
这将在 J14.txt
14P001
14P002
14P003
然后您需要做的就是编辑文件(使用记事本,而不是文字处理器)以将 "P" 替换为所需的任何字母。删除不需要目录的任何行。
然后可以使用
将生成的文件处理到目录中@ECHO OFF
SETLOCAL
FOR /f %%a IN (J14.txt) DO (
ECHO(MD "%%a"
)
GOTO :EOF
我现在的解决方案(我知道这比坏习惯更糟糕,但它有效并且会为我节省很多时间(或者至少为我的公司节省一些钱)):
@echo off
setlocal enabledelayedexpansion
set /p jahr=Welches Jahr?
set /p anzahl=Wieviele Projekte?
set /a looop=%anzahl%+1000
set /a count=1001
:LoopStart
set /p welches=P1 S2 L3 R4 F5 nichtexistent6?
if !welches!==1 mkdir %jahr%P!count:~-3!
if !welches!==2 mkdir %jahr%S!count:~-3!
if !welches!==3 mkdir %jahr%L!count:~-3!
if !welches!==4 mkdir %jahr%R!count:~-3!
if !welches!==5 mkdir %jahr%F!count:~-3!
if !welches!==6 echo "nicht existent"
set /a count=%count%+1
if %count% leq %looop% (goto LoopStart) else (goto:eof)
pause