Batch file 使用随机名称自动创建文件夹的批处理作业
我是个新手,能不能请一些人帮我一下 我想创建一个批处理文件 1-查看文件名中的前8个字符,创建这些文件并将其移动到新文件夹,其中前8个字符作为文件夹名 2-然后查看在步骤1中为下一个四个字符系列(9、10、11、12)创建的文件夹,并创建并移动到另一个子文件夹,下一个四个字符作为文件夹名称 3-然后查看在步骤2中创建的文件夹,查找每个文件的扩展名,创建并移动到扩展名为文件夹名的新文件夹 例如,我有这样的文件 ABCEFGHI0703xyz.pdf STUVWXYZ0805xyz.pptx 移动到文件夹 ABCEFGHI\0703\PDF STUVWXYZ\0805\PPTX 请记住,前8个字符是随机的,下4个字符是年和月,9种类型的扩展名 非常感谢您的帮助Batch file 使用随机名称自动创建文件夹的批处理作业,batch-file,Batch File,我是个新手,能不能请一些人帮我一下 我想创建一个批处理文件 1-查看文件名中的前8个字符,创建这些文件并将其移动到新文件夹,其中前8个字符作为文件夹名 2-然后查看在步骤1中为下一个四个字符系列(9、10、11、12)创建的文件夹,并创建并移动到另一个子文件夹,下一个四个字符作为文件夹名称 3-然后查看在步骤2中创建的文件夹,查找每个文件的扩展名,创建并移动到扩展名为文件夹名的新文件夹 例如,我有这样的文件 ABCEFGHI0703xyz.pdf STUVWXYZ0805xyz.pptx 移动到
Abdul在一个文件夹中的文件上进行测试:
@echo off
setlocal enabledelayedexpansion
for %%a in (*.*) do (
set "filespec=%%a"
set "ext=%%~xa"
md "!filespec:~0,8!\!filespec:~8,4!\!ext:~1!" 2>nul
move "%%a" "!filespec:~0,8!\!filespec:~8,4!\!ext:~1!" >nul
)
修改了
MD
和MOVE
命令以适应所需的目标目录。有一种创建随机文件夹的方法:
写入新批处理文件::start
md c:\Users\...\%random%
goto start
这将开始创建随机文件夹,您最多可以创建36833个文件夹。谢谢,这样可以在特定文件夹中运行脚本,而不是将脚本复制到每个文件夹中。此外,此脚本的另一个问题是扩展名不总是3个字符。要在不同的文件夹中运行批处理文件,请将批处理文件放在路径上的文件夹中,例如c:\windows。我还修改了它以使用任何扩展。如果需要在整个文件夹树中运行它,请在问题开始时说明.Ite将简单地
ECHO
要创建的目录名和要执行的MOVE
命令。测试和验证后,删除MD
和MOVE
行上的ECHO
关键字以激活。还需要设置源目录和目标目录。由于MD
命令将附加以重新创建现有目录,因此在MD
行中附加一个'2>nul',以抑制(无害的)错误报告。同样地,MOVE
将报告一个文件已移动。要抑制该消息,请在MOVE
行中附加“>nul”。此代码的一个问题是,当它创建新文件夹时,它会在根目录中创建实际文件夹,除非前8个字符与主文件夹名称匹配。当批处理文件中的源目录设置为C:\ABCDEFG文件名ABCDEFG07031234.xls 1时,此操作有效-结果为C:\ABCDEFG\ABCDEFG\0703\xls\ABCDEFG07031234.xls在主文件夹中创建文件夹,但是,当源目录为C:\test 2-结果为C:\ABCDEFG\0703\XLS\ABCDEFG07031234.XLS时,我希望得到第二个结果,而不是第一个。注意!这是一个无止境的循环。
:start
md c:\Users\...\%random%
goto start