Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
Windows 如何在文件夹的每个子目录中执行命令?_Windows_Powershell_Batch File_File Io_Command Line - Fatal编程技术网

Windows 如何在文件夹的每个子目录中执行命令?

Windows 如何在文件夹的每个子目录中执行命令?,windows,powershell,batch-file,file-io,command-line,Windows,Powershell,Batch File,File Io,Command Line,我有一个文件夹,其中包含更多文件夹 我正在寻找使所有文件在某一级别被移动一个 例如,我有: 父文件夹\Actor1\Movie\HighRes\HighresMovie.mp4 父文件夹\Actor1\Movie\LowresMovie.mp4 父文件夹\Actor2\Movie\HighRes\HighresMovie.mp4 父文件夹\Actor2\Movie\LowresMovie.mp4 但我希望它看起来像: 父文件夹\Actor1\Movie\HighresMovie.mp4 父文件夹

我有一个文件夹,其中包含更多文件夹

我正在寻找使所有文件在某一级别被移动一个

例如,我有:

父文件夹\Actor1\Movie\HighRes\HighresMovie.mp4 父文件夹\Actor1\Movie\LowresMovie.mp4 父文件夹\Actor2\Movie\HighRes\HighresMovie.mp4 父文件夹\Actor2\Movie\LowresMovie.mp4 但我希望它看起来像:

父文件夹\Actor1\Movie\HighresMovie.mp4 父文件夹\Actor1\Movie\LowresMovie.mp4 父文件夹\Actor2\Movie\HighresMovie.mp4 父文件夹\Actor2\Movie\LowresMovie.mp4 这是一个包含大约1000个参与者文件夹的大型文件夹

我当前的命令行命令部分工作:

for /f "delims==" %i in ('dir /a:d /b') do for /f "delims==" %f in ('dir "%i" /a:d /b') do (move "%i\%f\*.*" "%i"&&rd "%i\%f" /s /q)

我可以从Actor文件夹中的命令行运行这个命令,它完全按照我的要求执行。现在,我希望能够从ParentFolder运行它,并让它对我拥有的每个Actor文件夹应用相同的命令。

这将在$TopDir树中获得一个文件列表,这些文件与*.mp4匹配,并且在路径名中具有高分辨率。然后它遍历列表,获取父目录名,并将文件移动到该父目录

当你准备好真正去做的时候,删除-WhatIf。。。[咧嘴笑]

输出[重新格式化以便于阅读]

What if: Performing the operation
    "Move File"
    on target
    "Item: C:\Temp\ParentFolder\Actor1\Movie\HighRes\HighresMovie.mp4
     Destination: C:\Temp\ParentFolder\Actor1\Movie\HighresMovie.mp4".
What if: Performing the operation
    "Move File"
    on target
    "Item: C:\Temp\ParentFolder\Actor2\Movie\HighRes\HighresMovie.mp4
     Destination: C:\Temp\ParentFolder\Actor2\Movie\HighresMovie.mp4".

您要移动的文件是否始终位于HighRes目录中?是的,它始终位于名为HighRes的目录中。制作一个健壮的命令,可以从那么深的层次获取所有文件,这将是一件好事,但是对于这个例子,是的。我已经有了一些快速修改的代码,可以让它看起来更深一层吗?我已经很久没有做过BAT/CMD的东西了,我根本不知道你发布的代码的细节是什么。[脸红]所以我不能告诉你关于这个的任何事情。是的,我刚刚从其他人那里在线找到了代码,它在我所说的单个实例中工作。如果你知道一些其他的方法,这将是非常感谢!真是太棒了!有没有办法在事后清理空文件夹?@TylerBoodman-yes!将Remove Item-LiteralPath$DestDir-WhatIf添加到移动项目行之后&就在最后一行之前。@TylerBoodman-非常欢迎您!很高兴能帮助。。。[咧嘴笑]
What if: Performing the operation
    "Move File"
    on target
    "Item: C:\Temp\ParentFolder\Actor1\Movie\HighRes\HighresMovie.mp4
     Destination: C:\Temp\ParentFolder\Actor1\Movie\HighresMovie.mp4".
What if: Performing the operation
    "Move File"
    on target
    "Item: C:\Temp\ParentFolder\Actor2\Movie\HighRes\HighresMovie.mp4
     Destination: C:\Temp\ParentFolder\Actor2\Movie\HighresMovie.mp4".