我使用拖放操作编写了一个批处理文件,将文件夹中的多个文件移动到另一个目录,其中包含一个与之前文件夹同名的新文件夹。
示例如果我有一个名为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
答案 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"
...