2017-02-11 19 views
0

我正在尋找一個BATCH文件,以便根據名稱的第一個字將數千個文件移動到一個名稱爲NEW的文件夾中。我如何根據名字將幾千個文件移動到他們自己的文件夾?

例如:

c:\Monkeys likes apples.jpg 
c:\Monkeys likes bananas.jpg 
c:\Elephants likes avocados.jpg 
c:\Elephants likes Grapefruit.jpg 
--> 
C:\Monkeys\Monkeys likes apples.jpg 
C:\Monkeys\Monkeys likes bananas.jpg 
C:\Elephants\Elephants likes avocados.jpg 
C:\Elephants\Elephants likes Grapefruit.jpg 

結果應該顯示一個名爲「猴子」和「大象」與裏面的文件夾。

這就是我使用的,雖然這不是隻選擇正確的第一個單詞。

@echo off 
setlocal enabledelayedexpansion 
set folderpath=G:\Emulator\GAMES\test\ 
for %%f in (%folderpath%\*.*) do (
    set "foldername=%%~nf" 
    md "!foldername:~0,-3!" >nul 2>&1 
    move "%%f" "!foldername:~0,-3!" 
) 

在此先感謝!

+1

S.O.改變"%folderpath%\* *.*""%folderpath%\*.*"是關於幫助人們修復他們的代碼,而不是提供罐裝解決方案。請用你認爲最能理解解決問題的方式更新你的問題,並且人們會幫助你。然後你可以學習!祝你好運。 – shellter

回答

2
@echo off 
setlocal enabledelayedexpansion 
set "folderpath=G:\Emulator\GAMES\test\" 
Pushd "%folderpath%" 
For %%A in (*.jpg) do For /f %%B in ("%%~nA") Do (
    if not exist %%B md %%B >nul 2>&1 
    Echo move "%%~fA" %%B 
    move "%%~fA" %%B 
) 
Popd 
+0

不起作用。它只是顯示文件夾中每個單獨文件上的「系統找不到文件x」。 – avaris

+0

@avaris刪除錯誤的''usebackq''應該立即工作。 – LotPings

+0

謝謝,它雖然只適用於90%的文件,其餘的文件不會放在文件夾內,但它們都已經創建了一個文件夾,但它們並沒有放入文件夾中(每個文件夾中有多個文件 - 從我可以告訴)。 – avaris

1

這裏的另一種方法,它是如何執行?

@Echo Off 
Set "folderpath=G:\Emulator\GAMES\test" 

For %%A In ("%folderpath%\* *.*") Do Call :Sub "%%A" 
Timeout -1 
Exit/B 

:Sub 
    Set "newfolder=%~n1" 
    Set "newfolder=%newfolder: ="&:%" 
    If Not Exist "%~dp1%newfolder%\" MD "%~dp1%newfolder%" 
    Move %1 "%~dp1%newfolder%" 

上面的代碼看起來特別爲含有至少一個空間的文件名,如果你希望包括每一個文件,在線路4

相關問題