标题: [文件操作] 批处理复制一目录下的文件到所有超过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
- @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)
- )
- pause
复制代码
可否?
作者: Seter 时间: 2009-11-12 18:15
LS想复杂了,1!r:~10,1!==1就可以了啊
作者: Seter 时间: 2009-11-12 18:18
- @echo off&setlocal enabledelayedexpansion
- for /d %%i in (d:\b\*) do set r=%%i&if "!r:~10,1!" neq "" copy c:\a\*.* %%i\*.*
- 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
- @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
复制代码
作者: 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
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /ad /b d:\b') do (
- set "str=%%a"
- if "!str:~10!" neq "" for %%a in (htm jpg swf) do copy /y "c:\a\%%a" "d:\b\!str!"
- )
复制代码
作者: vsbat 时间: 2009-11-13 18:50
- @echo off
- setlocal enabledelayedexpansion
- for /d %%i in (d:\b\*) do (
- set "r=%%~ni"
- set r=!r:~10!
- if not "!r!" == "" (copy c:\a\*.htm "%%i")
- )
- pause
复制代码
[ 本帖最后由 vsbat 于 2009-11-13 18:57 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |