拖放文件夹中的多个文件以移动到具有相同文件夹名称

时间:2015-10-08 22:36:25

标签: batch-file drag-and-drop

我使用拖放操作编写了一个批处理文件,将文件夹中的多个文件移动到另一个目录,其中包含一个与之前文件夹同名的新文件夹。

示例如果我有一个名为Stuff的文件夹,并且在此文件夹中我有三个文件a.png,b.txt和c.jpg。

假设保存我要移动的文件的第一个文件夹Stuff位于... \ flower \ things \ Stuff等目录中。

然后我想在C:\创建一个名为Stuff的新文件夹,然后将第一个文件夹Stuff中的文件移动到新文件夹Stuff at C:\

实施例 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

1 个答案:

答案 0 :(得分:0)

@echo off
if not exist destination-folder\nul (mkdir "destination-folder")
for %%i in (%*) do (
  move "%%~i" "destination-folder"
)

等等,move命令此处不需要for loop

@echo off
mkdir "destination-folder"
move %* "destination-folder"

嗯让我试试

仅供记录:有another way但不会处理文件名中的空格。

@echo off
setlocal

:again
if "%~1" == "" goto done
move "%~1" "destination-folder"
shift
goto again
:done

哦,等待它拖放,但不是在命令行。我的意思是如果我键入script.bat file 1 with space.txt它会因为分割每个空格而失败,如

move "file" "destination-folder"
move "1" "destination-folder"
move "with" "destination-folder"
...