Board logo

标题: [其他] 批处理如何根据文件名移动文件到指定文件夹? [打印本页]

作者: internetfox    时间: 2010-12-23 13:52     标题: 批处理如何根据文件名移动文件到指定文件夹?

比如:e:\fcw有文件名为g12305,f11304,a10305,b09305文件,要求:g12305移动到12的文件夹,f11304移动到11的文件夹,a10305移动到10的文件夹,b09305移动到09的文件夹,, 并且如果文件已经存在要不提示覆盖,求批处理代码,谢谢!
作者: yhcbird    时间: 2010-12-23 14:08

应该是截取字符串然后move就可以了。可以参考孤星哥给我写的这段代码@echo off&setlocal enabledelayedexpansion
sed "s/[^0-9-]/\n/g" XFSearchList[1].txt>han.ye
(for /f %%a in (han.ye) do (
        set a=%%a
        if "!a:~0,10!"=="3303221010" if not "!a:~12!"=="" if not defined #!a:~-5! (
                set #!a:~-5!==
                md !a:~-5!
                start "" "http://10.33.100.15/HJXF/admin/XFHuiFuDetailPrint.aspx?serialnum=3303221010!a:~-5!"
                ping -n 15 127.1
                start "" f10.vbs
                ping -n 15 127.1
                move ..\回复打印单.files  .\!a:~-5!
                move ..\*.htm .\!a:~-5!
)))
ping -n 15 127.1
taskkill /im iexplore.exe /f
pause
del /q han.ye
作者: internetfox    时间: 2010-12-23 14:30

看不懂啊,给个实例好吧,@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d') do (
   set "x=%%~a"
   set x=!x:~1,2!
   move "%%~a" f:\!x!\
   )
pause

批处理只能放在当前目录,
作者: internetfox    时间: 2010-12-23 14:53

,@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d "f:\111*.*"') do (
   set "x=%%~a"
   set x=!x:~1,2!
   move "%%~a" f:\!x!\
   )
pause
为什么这样不行呢,
作者: hanyeguxing    时间: 2010-12-23 15:09

原帖由 internetfox 于 2010-12-23 13:52 发表
比如:e:\fcw有文件名为g12305,f11304,a10305,b09305文件,要求:g12305移动到12的文件夹,f11304移动到11的文件夹,a10305移动到10的文件夹,b09305移动到09的文件夹,, 并且如果文件已经存在要不提示覆盖,求批处理代码,谢 ...
  1. @echo off&setlocal enableDelayedExpansion
  2. for %%a in ("e:\fcw\*") do (
  3.     set a=%%~na
  4.     move "%%a" "f:\指定目录\!a:~1,2!"
  5. )
复制代码
以上为直接覆盖
如果不覆盖而跳过,则改成:
  1. @echo off&setlocal enableDelayedExpansion
  2. for %%a in ("e:\fcw\*") do (
  3.     set a=%%~na
  4.     echo n|move /-y "%%a" "f:\指定目录\!a:~1,2!"
  5. )
复制代码

作者: internetfox    时间: 2010-12-23 15:14     标题: 问题解决,谢谢

还是高手厉害,呵呵~~~~
作者: yhcbird    时间: 2010-12-23 15:17

@echo off&setlocal enableDelayedExpansion
for %%a in ("e:\fcw\*.*") do (
    set a=%%~na
    md !a:~1,2!
    move "%%a" !a:~1,2!
)

倒!孤星哥在啊。孤星哥我问下,vbs能实现鼠标左键的点击功能吗?。。。

[ 本帖最后由 yhcbird 于 2010-12-23 15:24 编辑 ]
作者: lvsehuaxue    时间: 2010-12-23 15:36

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b /a-d e:\fcw\*.*') do (
  3.     set v=%%~na
  4.     set v=!v:~1,2!
  5.     for /l %%b in (1 1 99) do (
  6.         set v1=0%%b
  7.         set v1=!v1:~-2!
  8.         if !v! equ !v1! (
  9.            md !v1!\
  10.            move %%~nxa !v1!\
  11.         )
  12.     )
  13. )
  14. pause
复制代码

作者: internetfox    时间: 2010-12-24 11:21

如果我移动到映射盘符,有时会移动不过去,先要把映射盘符打开一下后才能移动,是不是要加什么命令
作者: Batcher    时间: 2010-12-24 12:53     标题: 回复 9楼 的帖子

可以试试用start或者explorer命令打开映射盘符




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