2015-07-21 164 views
4

現狀:如何通過文件夾循環移動文件夾(批量)?

我嘗試在外殼移動在循環中的文件,但我的代碼是行不通的。

for /D %%F in (*) do (
    if "%%F" NEQ "%directoryToPutFilesIn%" (
    move /y "%%F" "%directoryToPutFilesIn%" 
) 
) 

經過幾小時的測試,我意識到這是因爲%% F指向文件夾,因此文件無法移動。

不好解決:

我做了工作,證實了我的懷疑是保存在其他變量%% F的值,並使用在下一回合變量移動的文件的方式。請注意,以下情況需要在第一回合初始化%precedentFile%

for /D %%F in (*) do (
move /y "%precedentFile%" "%directoryToPutFilesIn%" 
    if "%%F" NEQ "%directoryToPutFilesIn%" (
    move /y "%%F" "%directoryToPutFilesIn%" 
    set precedentFile=%%F 
) 

問題:

這種解決方案是不實際的,感覺是非。有沒有辦法調整我的當前代碼來做到這一點,或者只是另一種方式?

+0

您是否試圖只移動文件夾,或'.txt'文件等..? – UnknownOctopus

+0

我有2個循環,我展示的是文件夾。我有另一個文件幾乎相同。兩者都不起作用。 – Cher

+0

嘗試下面的代碼移動文件和文件夾,希望幫助:) :) – prudviraj

回答

2

嘗試下面的代碼從一個文件夾中的批處理腳本文件移動到另一個:

for /f %%a in ('dir /a:-D /b') do move /Y "%%~fa" "%directoryToPutFilesIn%" 

說明:

dir /a:-D /b : This command will list all files in the directory 
move /Y "%%~fa" "%directoryToPutFilesIn%" : This will move all files in the directory where this command is executed to the destination you have mentioned. 
%%~fa : This command will get full qualified path of the file with it's name. 

試試下面的代碼移動目錄: 以下命令將在路徑移動目錄該命令執行到所提供的目的地。在這將是H:\驅動器,相應地更改

for /D %%b in (*) do move /Y "%%~fb" "H:\" 
+0

我得到以下錯誤:在批處理參數的路徑運算符的以下使用 替代無效:%〜FA」 – Cher

+0

其實我加了一個%變量之前和它的作品。我不能編輯它。我將其標記爲答案。你知道爲什麼需要2%? – Cher

+0

如果你是上面的命令直接在它工作正常命令行執行,但如果你希望他們在批處理腳本,你需要使用一個額外的「%」,使用變量的值。這是由設計.. – prudviraj

相關問題