【发布时间】:2018-02-02 08:16:50
【问题描述】:
我想递归地将所有文件上移一级。
当前文件夹结构如下所示
D:\_Courses>tree /a
D:.
+---Course 1
| \---Download
+---Course 2
| \---Download
+---Course 3
| \---Download
\---Course 4
\---Download
我想将所有文件从“下载”文件夹移动到其父文件夹。
意思是,
“课程 1/下载”中的所有文件都应转到“课程 1”
“Course 2/Download”中的所有文件都应转到“Course 2”
“课程 3/下载”中的所有文件都应转到“课程 3”
“Course 4/Download”中的所有文件都应转到“Course 4”
问题1:显示一个不存在的文件夹
当我使用以下命令时
D:\_Courses>FOR /R /D %I IN (Download\) DO @ECHO %I
输出如下
D:\_Courses\Download\
D:\_Courses\Course 1\Download\
D:\_Courses\Course 1\Download\Download\
D:\_Courses\Course 2\Download\
D:\_Courses\Course 2\Download\Download\
D:\_Courses\Course 3\Download\
D:\_Courses\Course 3\Download\Download\
D:\_Courses\Course 4\Download\
D:\_Courses\Course 4\Download\Download\
但是,没有文件夹调用
D:\_Courses\Course 1\Download\Download
问题 2:移动到错误的目录
当我给出以下命令时
D:\_Courses>FOR /R /D %I IN (Download\) DO move "%I"*.* ..
将所有 4 个下载文件夹中的所有文件移至 D:
输出是 -
D:\_Courses>move "D:\_Courses\Download\"*.* ..
The system cannot find the file specified.
D:\_Courses>move "D:\_Courses\Course 1\Download\"*.* ..
D:\_Courses\Course 1\Download\518057_00_01.mp4
D:\_Courses\Course 1\Download\518057_00_02.mp4
D:\_Courses\Course 1\Download\518057_00_03.mp4
...
28 file(s) moved.
D:\_Courses>move "D:\_Courses\Course 1\Download\Download\"*.* ..
The system cannot find the file specified.
D:\_Courses>move "D:\_Courses\Course 2\Download\"*.* ..
D:\_Courses\Course 2\Download\486757_00_01.mp4
D:\_Courses\Course 2\Download\486757_00_02.mp4
D:\_Courses\Course 2\Download\486757_00_03.mp4
D:\_Courses\Course 2\Download\486757_00_04.mp4
...
40 file(s) moved.
D:\_Courses>move "D:\_Courses\Course 2\Download\Download\"*.* ..
The system cannot find the file specified.
D:\_Courses>move "D:\_Courses\Course 3\Download\"*.* ..
D:\_Courses\Course 3\Download\569336_00_01.mp4
D:\_Courses\Course 3\Download\569336_00_02.mp4
D:\_Courses\Course 3\Download\569336_00_03.mp4
D:\_Courses\Course 3\Download\569336_01_01.mp4
D:\_Courses\Course 3\Download\569336_01_02.mp4
...
19 file(s) moved.
D:\_Courses>move "D:\_Courses\Course 3\Download\Download\"*.* ..
The system cannot find the file specified.
D:\_Courses>move "D:\_Courses\Course 4\Download\"*.* ..
D:\_Courses\Course 4\Download\518056_00_01.mp4
D:\_Courses\Course 4\Download\518056_00_02.mp4
D:\_Courses\Course 4\Download\518056_00_03.mp4
...
17 file(s) moved.
D:\_Courses>move "D:\_Courses\Course 4\Download\Download\"*.* ..
The system cannot find the file specified.
【问题讨论】:
-
那么你想把所有子目录下的所有文件都移到根目录下吗?还是仅来自给定路径?
-
@GerhardBarnard 这只是文件夹结构的模式。如果存在名为 Download 的文件夹,我想将其上移一级。我正在做。以下命令 FOR /R /D %I IN (Download) DO move "%I". "%I"\.. 似乎有效。请您检查并确认。谢谢
-
啊好的,现在我得到了你想要的。忽略之前的评论
-
FOR /R /D %I IN (下载) DO move "%I"*.* "%I"\..
-
如果存在同名文件会怎样?
标签: batch-file cmd