【发布时间】:2015-10-09 08:22:25
【问题描述】:
我编写了一个批处理文件,使用拖放将文件夹中的多个文件移动到另一个目录,其中一个新文件夹与之前的文件夹同名。
例如,如果我有一个名为 Stuff 的文件夹,并且在此文件夹中我有三个文件 a.png、b.txt 和 c.jpg。
假设包含我要移动的文件的第一个文件夹 Stuff 位于 ...\flower\things\Stuff 之类的目录中。
然后我想在 C:\ 创建一个名为 Stuff 的新文件夹,然后将第一个文件夹 Stuff 中的文件移动到 C:\ 的新文件夹 Stuff
示例 C:\Stuff\a.png, b.txt, c.jpg
我想让它通用,所以如果第一个文件夹的名称与 Stuff 不同,它将使用包含我要移动的文件的文件夹的名称。
我在下面的工作,但我在让它工作之前遇到了很多问题,并且没有太多的编码知识。我想知道批处理文件是否会遇到任何问题,或者是否有更简单或更清洁的方法。
@ECHO OFF
ECHO "%~1"
FOR %%I IN (.) DO SET CurrentD=%%~nI%%~xI
MKDIR "C:\%CurrentD%"
:loop
MOVE "%~1" "C:\%CurrentD%"
shift
if not ["%~1"]==[""] goto loop
【问题讨论】:
-
你可以声明
%%~nI%%~xI而不是%%~nxI,它返回相同的...... -
对不起,如果我之前不清楚。假设保存文件的第一个文件夹 Stuff 位于 ...\flower\things\Stuff 之类的目录中。然后我想在 C:\ 创建一个名为 Stuff 的新文件夹,然后将第一个文件夹 Stuff 中的文件移动到 C:\ 的新文件夹 Stuff。我想让它通用,所以如果第一个文件夹的名称与 Stuff 不同,它将使用包含我要移动的文件的文件夹的名称。
-
您应该通过编辑您的帖子来澄清您的问题,而不仅仅是评论...