2010-01-12 76 views
0
@echo off 
set /A Counter=0 
setlocal enabledelayedexpansion 
for %%D in ("e:\test test\") do (
    for /f %%F in ('dir /a-d /b %%D*.*') do (
      ECHO. 
     ECHO Current file is: %%F 
     set src=%%F 
      set dest="e:\test test\space locate\%%F" 
     if not exist !dest! move !src! !dest! 

     if exist !dest! (
      ECHO. 
      ECHO ERROR: "%%F" already exists 
      set /A Counter+=1 
     ) 

     ECHO source file is !src! 
     ECHO destination is !dest! 

    ) 
) 
echo. 
echo %Counter% files not moved. 
+1

如果不努力正确解释您的问题,您将得不到多少帮助。代码的转储和“它不起作用”不是它的意思。 – pstanton 2010-01-12 04:02:42

+0

@pstanton:标题确实给出了问题陈述:在它们中有空格的文件不会被移动。 – 2010-01-12 04:06:55

+0

@pstanton对不起,我从来没有使用过这个网站,所以我没有完全弄清楚如何正确格式化代码。 – Matt 2010-01-12 04:12:58

回答

1

你可能只是需要把周围所有的文件名引号(")。

我谈论这样的事情:

if not exist "!dest!" move "!src!" "!dest!" 

这只是一个建议,我没有时间真正地尝试一下,现在对其进行调试。

编辑回应评论:

for默认使用空格作为分隔符。你应该说for /f "delims=",而不是仅仅for /f,以告诉它不要这样做。

+0

'dest'已经引用了......你只需要把它们放在'src'这里。仍然是+1,因为它应该是解决方案。 – Joey 2010-01-12 06:45:04

+0

当我试图说,它仍然没有在其中有一个空间的文件:( http://pastebin.com/m1e766aa2 – Matt 2010-01-12 07:24:51

相关问题