Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 将windows环境中的文件移动到包含部分文件名的文件夹_Batch File - Fatal编程技术网

Batch file 将windows环境中的文件移动到包含部分文件名的文件夹

Batch file 将windows环境中的文件移动到包含部分文件名的文件夹,batch-file,Batch File,我的主文件夹中有这样的文件。连字符的文件名是此人的姓名: Ran Perhar Training Records.pdf 运行Perhar.docx Ran Perhar Travel Records.xlsx Dove John Training Records.pdf Dove John.docx Dove John Travel Records.xlsx 每个人有4-5个文件,总共约200人 我想:根据姓名为每个人创建一个文件夹。例如:Ran Perhar。如果此文件夹不存在,请创建它。如

我的主文件夹中有这样的文件。连字符的文件名是此人的姓名:

  • Ran Perhar Training Records.pdf
  • 运行Perhar.docx
  • Ran Perhar Travel Records.xlsx
  • Dove John Training Records.pdf
  • Dove John.docx
  • Dove John Travel Records.xlsx
  • 每个人有4-5个文件,总共约200人

    我想:根据姓名为每个人创建一个文件夹。例如:Ran Perhar。如果此文件夹不存在,请创建它。如果它存在,我想移动在连字符移动到run Perhar文件夹之前运行过Perhar的所有文件。多夫·约翰也是如此,诸如此类

    所有文件都存在于同一主文件夹中,各个文件夹将在同一文件夹中创建。

    未测试:

    @echo off
    
    pushd "c:\persons"
    
    for /f "tokens=1,* delims=-" %%a in ('dir /a:-d /b *') do (
       md "%%~a" >nul 2>nul
       move "%%~a%%~b" "%%~a\" /y
    )
    

    是否希望基于名称的文件夹成为主目录的子文件夹?是否接受PowerShell脚本?将在名为Records的文件夹中创建基于名称的文件夹,该文件夹将与Ran Perhar Training Records等文件位于同一目录中。此解决方案有效。一旦我理解了格式/语法,我做了一些更改。我想从心底感谢你。谢谢你。这给了我一个答案和学习的灵感。我喜欢学习批处理编程,但不了解任何在线资源或书籍。有什么建议吗?请让我知道。现在我们可以考虑这个问题的答案和关闭。多亏了Stack Overflow的组合天才。一切都很好,请小心。@RanPerhar您可以单击回答点下方的勾号来接受它。至于教程-好的起点是:-信息有点过时,但仍然是批处理文件的稳定介绍。这可能是批处理命令的最佳参考,但有时缺乏详细信息。在这里,您可以找到一个很好的即用函数,它拥有最可行的批处理脚本社区。npocmaka,我希望单击什么勾号。对不起,我搞不懂这个。感谢您提供的有关旅游和进一步知识的建议。冉佩哈