2015-10-08 119 views
0

我使用拖放操作編寫了一個批處理文件,以將文件夾中的多個文件移動到具有與該文件夾同名的新文件夾的另一個目錄文件夾之前。拖放文件夾中的多個文件以移動到具有相同文件夾名稱的新目錄

例如,如果我有一個名爲Stuff的文件夾,並且在此文件夾中有三個文件a.png,b.txt和c.jpg。

比方說,第一個包含我想移動文件的文件夾Stuff位於... \ flower \ things \ Stuff目錄中。

然後我想打在C上新建一個文件夾:\名爲東西,然後第一個文件夾的東西中移動文件到新文件夾的東西在C:\

例 C:\東西\ 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

相反%%〜NI %%〜xI'你能說出'%%〜nxI'的'每一個空間失敗,它將返回相同... – aschipfl

+0

對不起如果我以前不清楚的話。假設保存文件的第一個文件夾Stuff位於... \ flower \ things \ Stuff目錄中。然後,我想在C:\上創建一個名爲Stuff的新文件夾,然後將第一個文件夾Stuff中的文件移動到C:\中的新文件夾Stuff。我想使它具有通用性,因此如果第一個文件夾的名稱與Stuff不同,它將使用具有我想要移動文件的文件夾的名稱。 – Tou

+0

你應該通過*編輯*你的帖子來澄清你的問題,而不僅僅是評論... – aschipfl

回答

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" 
... 
+0

謝謝。你的for循環比我所擁有的更乾淨簡單。 – Tou

+0

是的,它是拖放到批處理文件,我用你的for循環替換了我的批處理文件中的所有內容,並且工作得很好。 – Tou

+0

@你歡迎:)如果你喜歡答案,請不要忘記註冊。 – Paul

相關問題