批处理文件生成n个文件夹
Batch file to generate n amount of folders
你好我想创建一个批处理文件,它可以生成 n 个文件夹并将它们移动到指定的目录。直白点说就是 make folders {00001-00009}
之类的东西。我不想手动输入每个数字,我也希望能够排除数字。
到目前为止,我已经尝试了下面的这段代码。我得到了 C:\source\ 中的 5 个文件夹
并且我可以通过将 j=5
更改为任何整数来在一定程度上决定它们的命名方式,但是有时文件会生成 00256-003372 中的文件夹,而不是我指定的文件夹。当我将 j
更改为 j=256
和 运行 程序时会发生这种情况。
echo off
cd C:\source\ :: I included this because for some reason folder 1 copied to root
SET /a j=1
:floop
IF %j%==5 GOTO END
md 00%j%
cd 00%j%
SET /a j=%j%+1
cd C:\source\
GOTO FLOOP
:end
我这样做的另一种方法是在 .bat 文件中手动输入每个数字,如下所示。效果很好,但我必须为每个文件夹划一行。
md C:\Device_Numbers_Folder[=11=]001
md C:\Device_Numbers_Folder[=11=]002
P.S 我将 dir 文件命名为 source
因为我 运行 使用 CALL
收集了一堆 .bat 文件,这是源代码部分。
我想你想要这样的东西:
@echo off
setlocal EnableDelayedExpansion
::CD "C:\source\"
::only change these three lines
set "start=1"
set "amount=5"
set "length=5"
set "exclude=4,5"
set "excluded=0"
FOR %%G IN (%exclude%) DO (set /a "excluded+=1")
set /a "last=%start%+%amount%+%excluded%"
for /l %%i in (%start%,1,%last%) do (
set "skip=0"
FOR %%G IN (%exclude%) DO (if "%%i"=="%%G" set "skip=1")
if !skip! equ 0 (
set "folderName=0000000000%%i"
set "folderName=!folderName:~-%length%!"
md "!folderName!"
)
)
这里start是第一个数字,amount是需要创建的文件夹数量,length是新文件名的长度,所以长度为5的1变成00001。exclude是用逗号分隔所有不允许的号码列表
你好我想创建一个批处理文件,它可以生成 n 个文件夹并将它们移动到指定的目录。直白点说就是 make folders {00001-00009}
之类的东西。我不想手动输入每个数字,我也希望能够排除数字。
到目前为止,我已经尝试了下面的这段代码。我得到了 C:\source\ 中的 5 个文件夹
并且我可以通过将 j=5
更改为任何整数来在一定程度上决定它们的命名方式,但是有时文件会生成 00256-003372 中的文件夹,而不是我指定的文件夹。当我将 j
更改为 j=256
和 运行 程序时会发生这种情况。
echo off
cd C:\source\ :: I included this because for some reason folder 1 copied to root
SET /a j=1
:floop
IF %j%==5 GOTO END
md 00%j%
cd 00%j%
SET /a j=%j%+1
cd C:\source\
GOTO FLOOP
:end
我这样做的另一种方法是在 .bat 文件中手动输入每个数字,如下所示。效果很好,但我必须为每个文件夹划一行。
md C:\Device_Numbers_Folder[=11=]001
md C:\Device_Numbers_Folder[=11=]002
P.S 我将 dir 文件命名为 source
因为我 运行 使用 CALL
收集了一堆 .bat 文件,这是源代码部分。
我想你想要这样的东西:
@echo off
setlocal EnableDelayedExpansion
::CD "C:\source\"
::only change these three lines
set "start=1"
set "amount=5"
set "length=5"
set "exclude=4,5"
set "excluded=0"
FOR %%G IN (%exclude%) DO (set /a "excluded+=1")
set /a "last=%start%+%amount%+%excluded%"
for /l %%i in (%start%,1,%last%) do (
set "skip=0"
FOR %%G IN (%exclude%) DO (if "%%i"=="%%G" set "skip=1")
if !skip! equ 0 (
set "folderName=0000000000%%i"
set "folderName=!folderName:~-%length%!"
md "!folderName!"
)
)
这里start是第一个数字,amount是需要创建的文件夹数量,length是新文件名的长度,所以长度为5的1变成00001。exclude是用逗号分隔所有不允许的号码列表