Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用随机名称自动创建文件夹的批处理作业_Batch File - Fatal编程技术网

Batch file 使用随机名称自动创建文件夹的批处理作业

Batch file 使用随机名称自动创建文件夹的批处理作业,batch-file,Batch File,我是个新手,能不能请一些人帮我一下 我想创建一个批处理文件 1-查看文件名中的前8个字符,创建这些文件并将其移动到新文件夹,其中前8个字符作为文件夹名 2-然后查看在步骤1中为下一个四个字符系列(9、10、11、12)创建的文件夹,并创建并移动到另一个子文件夹,下一个四个字符作为文件夹名称 3-然后查看在步骤2中创建的文件夹,查找每个文件的扩展名,创建并移动到扩展名为文件夹名的新文件夹 例如,我有这样的文件 ABCEFGHI0703xyz.pdf STUVWXYZ0805xyz.pptx 移动到

我是个新手,能不能请一些人帮我一下

我想创建一个批处理文件

1-查看文件名中的前8个字符,创建这些文件并将其移动到新文件夹,其中前8个字符作为文件夹名

2-然后查看在步骤1中为下一个四个字符系列(9、10、11、12)创建的文件夹,并创建并移动到另一个子文件夹,下一个四个字符作为文件夹名称

3-然后查看在步骤2中创建的文件夹,查找每个文件的扩展名,创建并移动到扩展名为文件夹名的新文件夹

例如,我有这样的文件

ABCEFGHI0703xyz.pdf

STUVWXYZ0805xyz.pptx

移动到文件夹

ABCEFGHI\0703\PDF

STUVWXYZ\0805\PPTX

请记住,前8个字符是随机的,下4个字符是年和月,9种类型的扩展名

非常感谢您的帮助


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