您好我想创build一个批量文件,使n个文件夹,并将其移动到一个指定的目录。 像make folders {00001-00009}
说穿了。 我不想手动把每个号码,我希望能够排除数字以及。
到目前为止,我已经尝试下面的代码。 我得到了在C:\ source \中创build的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 /aj=1 :floop IF %j%==5 GOTO END md 00%j% cd 00%j% SET /aj=%j%+1 cd C:\source\ GOTO FLOOP :end
另一种方法是手动input一个.bat文件中的每个数字,如下所示。 这工作正常,但我必须为每个文件夹一行。
md C:\Device_Numbers_Folder\00001 md C:\Device_Numbers_Folder\00002
PS我命名的dir文件source
因为我运行一堆.bat文件与CALL
,这是源部分。
我想你想要这样的东西:
@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!" ) )
在这一开始是第一个数字,金额是它需要创建的文件夹的数量,长度是新文件的名称的长度,所以长度为5的1变为00001.排除是所有数字的逗号分隔列表不允许