2013-08-26 230 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"