2013-08-26 259 views
0

我有這個令人討厭的事情,這是讓我瘋狂。 我需要遍歷一個目錄並將包含在一個子目錄中的文件移動到另一個位置。批處理文件循環與空間

這適用於不包含任何空格的文件夾,但我有一些包含空格的目錄,這些目錄不起作用。 我試着在文件位置周圍添加一些「」,但這也不起作用。

這是我有:

括號內和RD命令
for /f "usebackq" %%m in (`dir /b D:\adir\dir with spaces`) do (
    MOVE /Y "D:\adir\dir with spaces\%%m\*.*" "D:\bdir\dir with spaces" 
    RD /q D:\adir\dir with spaces\%%m 
) 
+0

參考在http://stackoverflow.com/questions/7633694/move-files-with-spaces-in-file-name回答-using-batch-script – Azi

回答

2

我會做的第一件事就是把報價:

for /f "usebackq" %%m in (`dir /b "D:\adir\dir with spaces"`) do (
    MOVE /Y "D:\adir\dir with spaces\%%m\*.*" "D:\bdir\dir with spaces" 
    RD /q "D:\adir\dir with spaces\%%m" 

然後我會看看怎麼回事。 ..

這(帶引號), 「爲我工作」:

@echo off 
for /f "usebackq" %%m in (`dir /b "z:\dir with spaces"`) do (
    dir "z:\dir with spaces\%%m" 
) 

這(不帶引號)不工作:

@echo off 
for /f "usebackq" %%m in (`dir /b z:\dir with spaces`) do (
    dir z:\dir with spaces\%%m 
) 
+0

嘗試過,但它不帶文件 - 結果顯示:系統找不到指定的文件。 – Rik

+0

看到我上面的編輯。 – zentrunix

+0

OMFG!你不會相信發生了什麼 - 我的血腥目錄名稱錯誤。抱歉浪費你的時間。但「引號」確實有用。 – Rik

0
for /f "delims=" %%m in ('dir /b /ad "D:\adir\dir with spaces"') do (
    MOVE "D:\adir\dir with spaces\%%~m\*" "D:\bdir\dir with spaces" 
    RD "D:\adir\dir with spaces\%%~m"