gpt4 book ai didi

windows - 批处理文件生成n个文件夹

转载 作者:可可西里 更新时间:2023-11-01 10:34:20 28 4
gpt4 key购买 nike

您好,我想创建一个批处理文件,它可以生成 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\00001
md C:\Device_Numbers_Folder\00002

P.S 我将目录文件命名为 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是逗号分隔的列表所有的数字都不允许

关于windows - 批处理文件生成n个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35601034/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com