我正在尝试将三级子目录结构中的所有文件向上移动一级。
A:\mozartBilder\Box 03 - Divertimenti, Serenades\CD02\img\folder.jpg
我基本上想删除img
子目录,但保留其上一级的内容。
这些是我收藏的 180 张莫扎特作品 CD 中的一张。共有 180 张 CD,17 个盒装,每个盒装约 11 张 CD。每张图片都按照以下精确结构放置:
A:\mozartBilder\Box*number1-17\CD*1-11\img\folder.jpg
我想要实现的是将其folder.jpg
向上移动一个目录。
因此从
A:\mozartBilder\Box 03 - Divertimenti, Serenades\CD02\img\folder.jpg
到
A:\mozartBilder\Box 03 - Divertimenti, Serenades\CD02\folder.jpg
我在 SuperUser 上搜索过,发现有人有类似的问题,但是提供的解决方案都不适用于我。
对于此代码:
A:\mozartBilder>for /r %i in ("img\folder.jpg") do move %i %~pi..
我收到此错误:
A:\mozartBilder>move A:\mozartBilder\Box 02 - Serenades, Dances, Marches\CD03\"img\folder.jpg" \mozartBilder\Box 02 - Serenades, Dances, Marches\CD03\"img\.. The syntax of the command is incorrect.
答案1
要将 folder.jpg 上移一级但保留 \img 文件夹:
gci A:\mozartBilder folder.jpg -recurse |
move-item -Destination {$_.Directory.Parent.FullName}
要将文件上移一级并删除 \img 文件夹(假设它是空的):
gci A:\mozartBilder folder.jpg -recurse |
move-item -Destination {$_.Directory.Parent.FullName}
gci A:\mozartBilder -recurse |
?{$_.PSChildName -match 'img'} | remove-item
尝试在单个 foreach 对象中组合 move-item 和 remove-item 会导致错误消息,即使文件已被移动且目录已被删除,因此我采用了上述方法。
答案2
一种使用 GUI 的简便方法。
下载双指挥官;它是一个双窗格文件管理器,免费,甚至可用于商业用途,并且跨平台。您很快就会发现您再也不会访问命令行了。
双窗格非常适合移动/复制/存档/解压/比较操作,更不用说 FTP、文件/目录比较、多文件/目录重命名、按名称/内容搜索文件(使用通配符/正则表达式)等。
您有两个选择:
A:\mozartBilder\Box 03 - Divertimenti, Serenades\CD02\img\
在左窗格和A:\mozartBilder\Box 03 - Divertimenti, Serenades\CD02\
右窗格中 导航至- 使用键盘
plus
键选择源目录中的所有文件,或者按 Ctrl-A - 按 F6 移动所有文件并
enter
选择目标
- 使用键盘
或者
A:\mozartBilder\Box 03 - Divertimenti, Serenades\CD02\img\
在左侧窗格中 导航至- 使用键盘
plus
键选择源目录中的所有文件,或者按 Ctrl-A - 按 F6 移动所有文件并输入
..
(父目录)作为目标。
- 使用键盘
事实就是如此 :-)
因为没有图像的答案是不完整的......
请让我们知道它是如何运作的(并仔细查看 DC 的所有功能;我只是触及了上面的表面)