File 使用bat根据部分名称将文件移动到文件夹中
我在一个文件夹中有许多文件,我想将它们移动到与其部分名称相匹配的文件夹中 例如:File 使用bat根据部分名称将文件移动到文件夹中,file,batch-file,directory,File,Batch File,Directory,我在一个文件夹中有许多文件,我想将它们移动到与其部分名称相匹配的文件夹中 例如: [PartOfItsName] Season01Episode02 (04.04.16).mp4 [PartOfAnotherName] Season02Episode02 (05.02.16).mp4 [AndAnotherOne] Season03Episode04 (02.01.16).mp4 After moved I want something like this: C:/[PartOfItsNam
[PartOfItsName] Season01Episode02 (04.04.16).mp4
[PartOfAnotherName] Season02Episode02 (05.02.16).mp4
[AndAnotherOne] Season03Episode04 (02.01.16).mp4
After moved I want something like this:
C:/[PartOfItsName]/[PartOfItsName] Season01Episode02 (04.04.16).mp4
C:/[PartOfAnotherName]/[PartOfAnotherName] Season02Episode02 (05.02.16).mp4
C:/[AndAnotherOne]/[AndAnotherOne] Season03Episode04 (02.01.16).mp4
不会修改文件的名称,只需创建名称位于括号之间的文件夹,然后将文件移动到各自的文件夹中。在PowerShell中,您可以使用:
dir*.mp4 | mv-Dest{[regex]::Match($戡,\[.\]').Value}
这可能适用于批处理文件:
dir/b*.mp4>tmp
对于/f“tokens=1,2 delims=]”%%f in(tmp)do(
mkdir“%%f]”
移动“%%f]%g”“%%f]”
)
德尔tmp
注意。对于这两个版本,每个.mp4文件都必须有一个
[…]
节,并且名称中的任何其他地方都不能有方括号。即使在打开[
之前还有其他字符,此批处理脚本也可以工作
@echo off
for %%F in (*[*]*.mp4) do for /f "delims=[] eol=[ tokens=2" %%A in ("x%%F") do (
md "c:\[%%A]" 2>nul
move "%%F" "c:\[%%A]" >nul
)
在命令行上,它可以很容易地作为一个非常长的单行程序来完成:
for %F in (*[*]*.mp4) do @for /f "delims=[] eol=[ tokens=2" %A in ("x%F") do @md "c:\[%A]" 2>nul&move "%F" "c:\[%A]" >nul
非常感谢,它工作得很好!你能解释一下它是如何工作的吗?同样,也谢谢,你的代码也很有魅力:D你能解释一下它是如何工作的吗?可能是重复的