Board logo

标题: [文件操作] 批处理复制一目录下的文件到所有超过10字符文件夹名的文件夹下面 [打印本页]

作者: shweii    时间: 2009-11-12 17:16     标题: 批处理复制一目录下的文件到所有超过10字符文件夹名的文件夹下面

需要复制的文件是已知固定的 c:\a\     里面有几个文件 htm jpg swf
需要复制的目的地址是 d:\b\  下的随机十几位的文件夹名,隔段时间就会变的类似于“b099b07abc8410f1”这样的文件夹名

位数不保证每次都是16位,但肯定会大于10位
怎么定义名称大于10位的文件夹呢。
作者: Batcher    时间: 2009-11-12 17:37

批处理判断字符串长度
http://bbs.bathome.net/thread-1480-1-1.html
作者: vsbat    时间: 2009-11-12 17:50

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (d:\b\*) do (set "r=%%i"&echo %%i
  4. :u
  5. set r=!r:~1!&set /a n+=1&if not "!r!" == "" (goto u)
  6. :k
  7. if !n! gtr 10 (copy c:\a\*.htm  d:\b\%%i)
  8. )
  9. pause
复制代码

可否?
作者: Seter    时间: 2009-11-12 18:15

LS想复杂了,1!r:~10,1!==1就可以了啊
作者: Seter    时间: 2009-11-12 18:18

  1. @echo off&setlocal enabledelayedexpansion
  2. for /d %%i in (d:\b\*) do set r=%%i&if "!r:~10,1!" neq "" copy c:\a\*.* %%i\*.*
  3. pause
复制代码
测试通过
刚有个地方忘记改了,现在可以了吧~!

[ 本帖最后由 Seter 于 2009-11-12 20:38 编辑 ]
作者: shweii    时间: 2009-11-12 18:21

我测试楼上的运行结果显示是

c:\a\2.htm
文件名、目录名或卷标语法不正确。
c:\a\2.swf
文件名、目录名或卷标语法不正确。
c:\a\fitCap.jpg
文件名、目录名或卷标语法不正确。
已复制         0 个文件。
请按任意键继续. . .
作者: shweii    时间: 2009-11-12 18:26

原帖由 vsbat 于 2009-11-12 17:50 发表
@echo off
setlocal enabledelayedexpansion
for /d %%i in (d:\b\*) do (set "r=%%i"&echo %%i
:u
set r=!r:~1!&set /a n+=1&if not "!r!" == "" (goto u)
:k
if !n! gtr 10 (copy c:\a\*.htm  d:\b\%%i)
)
...


测试了下,运行没通过,谢谢。
作者: shweii    时间: 2009-11-12 18:49

继续提问,两位朋友帮写的都测试没有通过,希望有人再进来帮修改下,谢谢。
作者: vsbat    时间: 2009-11-13 12:17

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (d:\b\*) do (set "r=%%i"&echo %%i
  4. set r=!r:~10!
  5. if not "!r!" == "" (copy c:\a\*.htm  d:\b\"%%i")
  6. )
  7. pause
复制代码

作者: shweii    时间: 2009-11-13 16:47

原帖由 vsbat 于 2009-11-13 12:17 发表
@echo off
setlocal enabledelayedexpansion
for /d %%i in (d:\b\*) do (set "r=%%i"&echo %%i
set r=!r:~10!
if not "!r!" == "" (copy c:\a\*.htm  d:\b\"%%i")
)
pause


运行结果
d:\b\21
d:\b\465sdf4sd4fsdf6sd4f
c:\a\sfsf.htm
文件名、目录名或卷标语法不正确。
已复制         0 个文件。
d:\b\dsf
d:\b\sfasdfdsgdhfgjgjgk4656313132
c:\a\sfsf.htm
文件名、目录名或卷标语法不正确。
已复制         0 个文件。
请按任意键继续. . .
作者: batman    时间: 2009-11-13 17:00

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /ad /b d:\b') do (
  3.      set "str=%%a"
  4.      if "!str:~10!" neq "" for %%a in (htm jpg swf) do copy /y "c:\a\%%a" "d:\b\!str!"
  5. )
复制代码

作者: vsbat    时间: 2009-11-13 18:50

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (d:\b\*) do (
  4. set "r=%%~ni"
  5. set r=!r:~10!
  6. if not "!r!" == "" (copy c:\a\*.htm  "%%i")
  7. )
  8. pause
复制代码

[ 本帖最后由 vsbat 于 2009-11-13 18:57 编辑 ]




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2